您的位置:首页 > 数据库 > Oracle

Oracle的dbms_output包的put()和put_line()的区别只是有没有回车换行吗?

2009-01-01 00:31 483 查看
答案是否

除了自动添加回车换行外,还有就是缓冲区最大容量的问题!!

无论如何设置serveroutput size,10g里

put() 最多只能输出 32767 个byte



put_line() 的最大容量为 1000000个byte

以下的代码目的是生成一个oracle数据库的用户自定义的存储过程和函数!如果你的用户代码足够长(大于32767),就会发现

使用put()会报错,而使用put_line()不会报错!

不过问题是:使用put_line()获得的代码都会插入一个空行,十分不爽!我目前还没想到解决方法,若高手指点,不胜感谢!

declare
tablename varchar2(30) := '%';
begin
for objname in (select distinct TYPE, name
from user_source
where TYPE in ('PROCEDURE', 'FUNCTION')
and name like tablename
order by TYPE, name)
loop
dbms_output.enable(10000000);
dbms_output.put('CREATE OR REPLACE' || ' ');
for output in (select text
from user_source
where name = objname.name
and TYPE in ('PROCEDURE', 'FUNCTION')
order by TYPE, name, line)
loop

/* dbms_output.put(output.text); --如果使用put则会报错 */

dbms_output.put_line(output.text);
end loop;

dbms_output.put_line('/');
end loop;

end;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: