oracle - dbms_output

1、如果dbms_output.put_line的內容不能顯示,需要在命令行中先敲入set serveroutput on;只要敲一遍就好,之後dbms_output.put_line的內容就能顯示出來了;

2、dbms_output.put_line每行只能顯示255個字符,超過了就會報錯,報錯內容如下

ORA-20000: ORU-10028: line length overflow, limit of 255 chars per line

解決這個問題的方法如下:

declare

v_result Varchar2(1000);--這是需要打印出結果的字符串

v_pos Number := 1;--用來記錄v_result每行開始字符的位置


WHILE v_pos<= LENGTH(v_result) LOOP

DBMS_OUTPUT.PUT_LINE(SUBSTR(v_result, v_pos, 200));

v_pos:= v_pos+ 200;

END LOOP;

這樣就能打印超過255長度的字符串,超過200長度的自動換行打印出來

begin

DBMS_OUTPUT.put( "put======= ");--不換行

DBMS_OUTPUT.put( "put======= ");--不換行

DBMS_OUTPUT.put_line( "putline====== ");--換行

DBMS_OUTPUT.put_line( "putline====== ");--換行

DBMS_OUTPUT.put_line( "putline====== ");--換行

end;

結果:

put=======put=======putline======

putline======

putline======


DECLARE
abc number;
CURSOR cur IS SELECT 1 from dual;

BEGIN
DBMS_OUTPUT.PUT_LINE( 'cursor opened ');
open cur;

LOOP
fetch cur into abc;
DBMS_OUTPUT.PUT_LINE( 'one data ');
exit when cur%notFound;
END LOOP;
close cur;
end;



要使用DBMS_OUTPUT,必須先
SQL> set serveroutput on

dbms_output.put_line輸出的記錄太多的話,會出現緩衝區的溢出:
ORA-20000: ORU-10027: buffer overflow, limit of 2000 bytes
ORA-06512: 在"SYS.DBMS_OUTPUT", line 35
ORA-06512: 在"SYS.DBMS_OUTPUT", line 198
ORA-06512: 在"SYS.DBMS_OUTPUT", line 139
ORA-06512: 在line 9

解決方法如下:
(1) 用dbms_output.enable( )設定長度.
DBMS_OUTPUT.ENABLE (buffer_size IN INTEGER DEFAULT 20000);
(注:該方法按如上設置沒成功,直接DBMS_OUTPUT.ENABLE (20000);則成功執行)

(2) 也可以SET SERVEROUTPUT ON SIZE 5000

其中(1)方法僅對當次設定有效,刪除後仍會提示錯誤,而(2)方法是修改配置信息,如果不關閉Sql*plus的該設定仍然存在。


原文:http://blog.csdn.net/zhangxs_3/article/details/4697160
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章