很多时候我们在调试函数或存储过程的时候,经常会遇到想看变量的值,但是却显示Long value,让人很头疼,特此在这里写了一个过程,可用来在DBMS Output 窗口输出变量的值,可支持长达4GB的字符串数据。
/*
*功能: 输出长字符串,可支持4GB的字符串数据,便于过程/函数的调试,若出现buffer overflow ,则可调大 dbms_output.enable(50000)中参数的值
*入参: i_sourceStr
*输出: 只能在DBMS Output 窗口中输出
*/
create or replace procedure sp_putline(i_sourceStr in clob)
as
v_lenStr clob;
v_str varchar2(4000);
v_num number;
v_i number;
BEGIN
dbms_output.enable(50000);
dbms_output.put_line('源字符串字符个数:'||length(i_sourceStr)||';');
if(length(i_sourceStr) > 4000) then
v_num := 1;
loop
v_lenStr := substr(i_sourceStr, v_num, 4000);
v_i := 1;
loop
v_str := substr(v_lenStr, v_i, 1000);
dbms_output.put_line(v_str);
v_i := v_i + 1000;
exit when v_i > length(v_lenStr);
end loop;
v_num := v_num + 4000;
exit when v_num > length(i_sourceStr);
end loop;
else
v_num := 1;
loop
v_str := substr(i_sourceStr, v_num, 1000);
dbms_output.put_line(v_str);
v_num := v_num + 1000;
exit when v_num > length(i_sourceStr);
end loop;
end if;
end sp_putline;
/
希望可以帮到有需要的同学。