CLOB處理的一些問題

2021-06-19 21:25:58 字數 1834 閱讀 3768

1: clob超過2的15次方時,隱式字元轉換會失效,導致無法拼接數字至clob

我用如下指令碼做了測試,當

clob

超過32767

的時候拼接數字就是出現問題

.**字元轉換失效

.需要對數字進行轉換才能拼接成功

,32767

應該是clob

乙個儲存塊的大小吧.

具體原因還需要查閱

clob

相關文件

.有更多測試請補充.

declare

l_buff

clob;

i     

number

:= 0;

begin

while

i <=

40000

loop

begin if

i =32768

then

l_buff :=l_buff ||

'1';

else

l_buff :=l_buff || 1;

endif;

exception

when

others

then

dbms_output.put_line(i);

exit;

end;

i := i + 1;

endloop;

end;

2:clob寫入檔案,如果不超過一定的2的15次方,可以直接把clob作為varchar2直接寫入檔案.

但是需要注意寫入檔案時檔案buff大小同樣不能超過2的15次方.超過的部分無法寫入.需要定時進行buff寫入

function clob_to_file(o_error_message in out rtk_errors.rtk_text%type,

o_clob_buff     in out clob,

o_file          in out utl_file.file_type)

return boolean is

l_program varchar2(255) := 'cmx_zpwfepos_pub_pkg.clob_to_file';

n_offset    integer;

n_clob_size integer;

v_buf       varchar2(4000);

v_buf_long  integer := 1000;

begin

n_clob_size := dbms_lob.getlength(o_clob_buff);

n_offset    := 1;

while n_offset <= n_clob_size loop

v_buf := dbms_lob.substr(lob_loc => o_clob_buff,

amount  => v_buf_long,

offset  => n_offset);

utl_file.put(o_file, v_buf);

utl_file.fflush(v_file);

n_offset := n_offset + v_buf_long;

end loop;

return true;

exception

when others then

o_error_message := sql_lib.create_msg('package_error',

sqlerrm,

l_program,

to_char(sqlcode));

return false;

end clob_to_file;

處理語法高亮的一些問題

首先 不得不說,我乙個web後台工程獅,每天都在做前端的事,吐槽 吐槽 唉 嘿嘿 高亮.使用外掛程式 highlight.js 用法 官網api blog.csdn.net spy19881201 article details 38866033 寫的比較簡單易懂 查了不少文件總結 裡面寫你需要的 ...

antD vue 遇到的一些問題處理

1.maxlength 50 v decorator realname initialvalue info.realname invalid prop type check failed for prop maxlength expected number with value 50,got str...

關於異常的處理一些問題之我見

1.異常處理的好處在絕大多數的情況下都是大於壞處,請盡量使用異常處理.2.如果要針對單獨一種異常進行了try.catch處理後,最好外面再要外包一層try.catch去捕捉未知的異常 或者用乙個try,多個catch,而最後乙個catch就是用來catch未知異常 因為你永遠都不不能保證你的程式在 ...