永发信息网

dbms_output的简介

答案:1  悬赏:0  手机版
解决时间 2021-02-19 14:37
dbms_output的简介
最佳答案
Oracle推荐在debug PL/SQL程序时使用该程序包,不推荐使用该包来做报表输出或其他格式化输出之用。
概述
DBMS_OUTPUT包主要用于调试PL/SQL程序,或者在SQL*PLUS命令中显示信息(displaying message)和报表,譬如我们可以写一个简单的匿名PL/SQL程序块,而该块出于某种目的使用DBMS_OUTPUT包来显示一些信息。
在该DBMS_OUTPUT包中存在2个存储过程,它们是PUT_LINE和PUT过程,使用这2个Procedure可以做到将信息存放到PL/SQL的Buffer中,以便其他的触发器、存储过程、程序包来读取。在独立的PL/SQL程序或匿名块中,我们还可以使用GET_LINES和GET这2个存储过程来将存放在PL/SQL Buffer中的信息输出(display)到屏幕。
DBMS_OUTPUT包子程序摘要   DISABLE存储过程 禁用消息输出 ENABLE 存储过程 启用消息输出 GET_LINE 存储过程 从buffer中获取单行信息 GET_LINES 存储过程 从buffer中获取信息数组 NEW_LINE 存储过程 终结有PUT过程所创建的一行 PUT 存储过程 将一行信息放到buffer中 PUT_LINE 存储过程 将部分行信息放到buffer中 注意目前PUT过程已废弃,因为遗留问题将被保留,但不在推荐使用。
DISABLE存储过程
该存储过程用以禁用对PUT, PUT_LINE, NEW_LINE, GET_LINE, and GET_LINES过程的调用,并会清理buffer中任何残存信息。
与之相反的是ENABLE存储过程,若在SQL*PLUS中使用SERVEROUTPUT选项则不需要调用该存储过程。

语法
DBMS_OUTPUT.DISABLE;

编译器指示
pragma restrict_references(disable,WNDS,RNDS);

ENABLE存储过程
该存储过程用以启用对PUT, PUT_LINE, NEW_LINE, GET_LINE, and GET_LINES存储过程的调用。

语法
DBMS_OUTPUT.ENABLE (
buffer_size IN INTEGER DEFAULT 20000);

编译指示
pragma restrict_references(enable,WNDS,RNDS);

参量   buffer_size Buffer长度的上限,单位为bytes字节。将buffer_size设置为NULL即指定没有限制
使用注意事项
当在SQL*PLUS总使用 SET SERVEROUTPUT选项时没有必要使用该过程若有多次对ENABLE过程的调用,那么buffer_size以最后指定的为准。当用户没有指定buffer size为NULL时,该参量的上限为1,000,000字节,而下限为2,000一般建议buffer size设置为NULL,10g中默认值使用20000以便兼容老的数据库版本。
GET_LINE 存储过程
该过程用以从buffer中获取单行信息。

语法
DBMS_OUTPUT.GET_LINE (
line OUT VARCHAR2,
status OUT INTEGER);

参量   line 将返回buffer中的一行信息,但不包括最后的换行符。一般建议申明该参数为VARCHAr2(32767)类型,以避免出现ORA-06502: PL/SQL: numeric or value error: character string buffer too small”.错误 status 若调用成功则返回0,若buffer中没有更多行的信息则返回1
使用注意事项
可以选择是从buffer中获取单行还是多行的数组信息。使用GET_LINE过程可以获取单行信息。从性能考虑,应当减少调用次数,使用GET_LINES函数直接从buffer中返回一个多行的数组若在使用SQL*PLUS则可以设置SET SERVEROUTPUT选项控制是否直接输出到屏幕在调用GET_LINE或GET_LINES后,任何行信息在下一次的PUT, PUT_LINE, or NEW_LINE前没有被获取的都将被丢弃,以避免误会
GET_LINES 存储过程
该存储过程用以从Buffer中获取一个多行的的数组

语法
DBMS_OUTPUT.GET_LINES (
lines OUT CHARARR,
numlines IN OUT INTEGER);
DBMS_OUTPUT.GET_LINES (
lines OUT DBMSOUTPUT_LINESARRAY,
numlines IN OUT INTEGER);

参量   lines 返回Buffer中多行信息的数组。该数组中每行的最大长度为32767bytes。 numlines 想要获取行的数量。在成功获取多行信息后,该过程将返回实际获取的行数。若返回的数字小于要求的值时,说明buffer中没有更多行的信息了。
使用注意事项:
可以选择是从buffer中获取单行还是多行的数组信息。使用GET_LINE过程可以获取单行信息。从性能考虑,应当减少调用次数,使用GET_LINES函数直接从buffer中返回一个多行的数组若在使用SQL*PLUS则可以设置SET SERVEROUTPUT选项控制是否直接输出到屏幕在调用GET_LINE或GET_LINES后,任何行信息在下一次的PUT, PUT_LINE, or NEW_LINE前没有被获取的都将被丢弃,以避免误会

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
金龙家电地址有知道的么?有点事想过去
泾海大酒店我想知道这个在什么地方
加工贸易进口料件等属于保税性质的进口货物,
中国农业银行24小时自助银行(东坝办事处)地址
伊通东站旅店地址在哪,我要去那里办事
明康汇安徽南陵屠宰加工基地在哪里啊,我有事
2009年5月16日,以“扩大民间交流、加强两岸
目前我国汽车大多使用的液体燃料是
"蛩"是什么字?
亲们,谁知道天津那个书店能买到小学到 初中
玉林粮油食品批发市场
海西国际副食品商城南门地址在哪,我要去那里
【三山五岳】三山五岳里的三山是指那三座山
计算20%甘露醇注射液是否等渗
60级的项链多少灵力才算好?
推荐资讯
闯了2次红灯扣12分怎么办
怎么把wordpress的顶部图片替换成自己的动态
一框架角柱抗震等级二级,采用HRB400钢筋,C3
咸业重宝是哪个皇帝
买比亚迪秦好还是军威迈锐宝好?比亚迪14.5万
骑车上班摔跤后,医保不报,工伤不算,公司还
1994年6月23好生的不知道什么星座
次梁加筋和吊筋的区别是什么?
四云奶盖贡茶地址在哪,我要去那里办事
秘密花园金周元穿的那件意大利衣服是什么?
空调维修一般要学多久?月薪是多少?
三人行教育(五洲路)地址在什么地方,想过去办
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?