天地不仁,以万物为刍狗!
关于10g以下dbms_output.put_line超长的问题
上一篇 /
下一篇 2007-06-26 00:00:00
/ 个人分类:oracle
关于10g以下dbms_output.put_line超长的问题
对于10gdbms_output.put_line的长度是没有限制
*tj+V
s%o;x
VG0如果报错:buffer overflow,执行如下语句即可:ITPUB个人空间/V,d,OA5e}
set serveroutput ON SIZE UNLIMITED FORMAT WORD_WRAPPEDITPUB个人空间!A8qL&z^4J
由于10g以下dbms_output.put_line的长度有限制
g:vpBwK0所以今天特意写了一个按照回车符来截取字符串,也就是按行截取,然后打印出来的过程,希望对某些人有用!
1N9yVPq6t {8Sa0create or replace procedure print_proc(str in varchar2) isITPUB个人空间n:Gy#y#cFV
/*
5tf,~)kj@u0 --打印字符串,调试的时候用
mE1E2o1sx0 --由于字符串过长,超过了dbms_output.put_line的长度,故采用本程序分行打印出来ITPUB个人空间F3m ?Y+cOT1g[
--@auther:Z.X.TITPUB个人空间0J5U z9n8{#O\
--@date:2007-6-26
([$vB:I)[;HRs0 */ITPUB个人空间p%We/f8cV
beginITPUB个人空间z.ToEq
dbms_output.put_line('lengthb(str) =' || lengthb(str));ITPUB个人空间0Dy*nU1PI'G
if (lengthb(str) < 255) then
uga+ExO G3D3^
s0 dbms_output.put_line(str);ITPUB个人空间j_.^
fYq
elseITPUB个人空间R-w$w s%v0x*pwM.s
for i in 1 .. length(str) - length(replace(str, chr(10))) + 1ITPUB个人空间 n
R2kf+R+@H
loop
c~Na
s"gN0 dbms_output.put_line(substr(str, instr(chr(10) || str, chr(10), 1, i), instr(str ||ITPUB个人空间v z}$X0H_)u&xL
chr(10), chr(10), 1, i) -
S[WX"\A4ne$E`Q0 instr(chr(10) || str, chr(10), 1, i)));
WoN6PaF0 end loop;
+dX
yL5Yb0 end if;
F1F1_KO0exceptionITPUB个人空间k|%{C z-^C^|`
when others thenITPUB个人空间m!o5l;gF
dbms_output.put_line(sqlerrm);
{Me;ax,Y7Gw0 dbms_output.put_line(dbms_utility.format_call_stack);ITPUB个人空间5CL0k2j P-_K V
end print_proc;
v3b{(Io`0
导入论坛
引用链接
收藏
分享给好友
推荐到圈子
管理
举报
TAG: