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;
除了自动添加回车换行外,还有就是缓冲区最大容量的问题!!
无论如何设置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;
相关文章推荐
- Oracle的dbms_output包的put()和put_line()的区别只是有没有回车换行吗?(转)
- 设置 oracle sqlplus DBMS_OUTPUT.put_line
- Oracle的DBMS_OUTPUT.PUT_LINE用法及脚本批处理方法
- 解决oracle 10g sql *plus 用dbms_output.put_line()输出时的长度限制问题 ORA-20000: ORU-10028: line le
- Oracle dbms_output.put_line长度限制问题
- ORACLE 11g 自带程序 SQL Developer中不显示DBMS_OUTPUT.PUT_LINE()解决方案
- oracle命令窗口中dbms_output.put_line不显示问题
- oracle dbms_output.put_line
- oracle 拆分输出dbms_output.put_line longValue解决
- 设置 oracle sqlplus DBMS_OUTPUT.put_line
- Oracle的DBMS_OUTPUT.PUT_LINE用法及脚本批处理方法
- ORACLE 11g 自带程序 SQL Developer中不显示DBMS_OUTPUT.PUT_LINE()解决方案
- 关于Oracle Developer 的 DBMS_OUTPUT.PUT_LINE 输出问题
- 关于Oracle中varchar2和dbms_output.put_line的长度限制问题小结
- PL/SQL的procedure中DBMS_OUTPUT.put_line没有显示
- 使用dbms_output.put_line打印异常所在的行
- dbms_output.put_line显示不出结果
- 怎样使用DBMS_OUTPUT.PUT_LINE?
- “回车”(carriage return)和“换行”(line feed)这两个概念的来历和区别
- PL/SQL 中 dbms_output.put_line 输出字符长度限制的问题