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的該設定仍然存在。


在SQL Server中的輸出方式是PRINT 函數:

IF EXISTS (SELECT zip FROM authors WHERE zip = '94705')
PRINT 'Berkeley author'

 

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/zhangxs_3/archive/2009/10/19/4697160.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章