小枫客栈

淡泊以明志,宁静以致远。

Oracle计算CLOB字段的长度和字节大小

这两天群里在讨论一个关于clob字段长度和大小计算的问题,搜了一下网上确实没现成计算clob的函数。现提供一个计算clob字段大小的函数,以便各位同学使用。

CREATE OR REPLACE FUNCTION GET_CLOB_LENGTHB(P_STRING IN CLOB)
  RETURN INTEGER IS
  C_MAX_LENGTH CONSTANT INTEGER := 10922;
  I         INTEGER;
  V_LENGTH  INTEGER;
  V_LENGTHB INTEGER;
  V_STRING  VARCHAR2(32767);
BEGIN
  V_LENGTH  := NVL(DBMS_LOB.GETLENGTH(P_STRING), 1);
  I         := 1;
  V_LENGTHB := 0;
  WHILE (I <= V_LENGTH) LOOP
    V_STRING  := DBMS_LOB.SUBSTR(P_STRING, C_MAX_LENGTH, I);
    V_LENGTHB := V_LENGTHB + LENGTHB(V_STRING);
    I         := I + C_MAX_LENGTH;
  END LOOP;
  RETURN NVL(V_LENGTHB, 0);
END;

验证脚本

create table clob_test( test clob);
insert into clob_test VALUES ('aBcdefGhijklmno');
insert into clob_test VALUES ('小枫你好啊');
insert into clob_test VALUES ('小枫你好啊a');
select LENGTHB('aBcdefGhijklmno'),LENGTHB('小枫你好啊'),lengthb(('小枫你好啊a')) from dual;
select get_clob_lengthb(t1.test),dbms_lob.getlength(t1.test),t1.test from clob_test t1;


发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-BlogPHP 1.7.2

Copyright © 2019 Xiaofeng.org
豫ICP备16026559号-1