DBMS_OUTPUT包語法簡介及使用小實驗

還不算暈發表於2013-11-25
DBMS_OUTPUT 包--語法
1、enable:在serveroutput on的情況下,用來使dbms_output生效(預設即開啟)
說明:該過程用於啟用本包,如果沒有被啟用,將無法呼叫本包的其它其餘過程和函式。
當呼叫該過程,緩衝區最大尺寸為1000000位元組,最小為2000位元組,預設為20000位元組。
注意:如果在SQL*PLUS中使用SERVEROUTPUT選項,則沒有必要使用該過程。
語法:DBMS_OUTPUT.ENABLE(buffer_size in integer default 20000);

2、disable:在serveroutput on的情況下,用來使dbms_output失效
    說明:該過程用於禁止本包,並清除緩衝區的內容。當本包被禁止,將無法呼叫本包的其它其餘過程和函式。
注意:如果在SQL*PLUS中使用SERVEROUTPUT選項,則沒有必要使用該過程。
語法:DBMS_OUTPUT.DISABLE;

3、put:put_line:
    說明:過程put_line用於將一個完整行的資訊寫入到緩衝區中,會自動在行的尾部追加行結束符;
過程put則用地分塊建立行資訊,需要換行需要使用過程new_line追加行結束符。
語法:dbms_output.put(item in number\varchar2\date);dbms_output.put_line(item in number\varchar2\date);

4、new_line:作為一行的結束,可以理解為寫入buffer時的換行符
    說明:該過程用於在行的尾部追加行結束符。
語法:dbms_output.new_line;
5、get_line:get_lines:get_line之後會將buffer清空
    說明:過程get_line用於取得緩衝區的單行資訊,get_lins用於取得緩衝區的多行資訊。
語法:dbms_output.get_line(line out varchar2,status out integer);
dbms_output.get_lines(lines out chararr,numlines in out integer);
其中line用於取得緩衝區的單行資訊(最大255位元組),status用於返回過程執行是否成功,0成功1表示沒有行;
lines用於取得緩衝區的多行資訊,numlines指定要檢索的行數,並返回實際檢索的行數。

     需要注意以下幾點:
-----------------------
    1、set serveroutput on:如果要在sqlplus中看到dbms_output的輸出,則必須設定該引數值為on
    2、每行能容納的最大值是32767bytes
    3、buffer的預設值是20000bytes,可設定的最小值為2000bytes,最大值為1000000bytes

1.set serveroutput為OFF時,dbms_output無輸出

BYS@ bys3>show serveroutput
serveroutput OFF
BYS@ bys3> begin
  2      dbms_output.put_line('hello world!');     
  3      dbms_output.put('bys');
  4      dbms_output.new_line;
  5  end;
  6  /

PL/SQL procedure successfully completed.
#############################

2.set serveroutput為ON時,測試put_line,put,new_line

BYS@ bys3>set serveroutput on
BYS@ bys3>show serveroutput
BYS@ bys3> begin
  2      dbms_output.put_line('hello world!');  --直接輸出hello world!
  3      dbms_output.put('bys');
  4      dbms_output.put('good');
  5      dbms_output.new_line;   --輸出buffer中的,bys good在同一行。
  6      end;
  7      /
hello world!
bysgood

PL/SQL procedure successfully completed.
BYS@ bys3> begin
  2      dbms_output.put_line('hello world!');  
  3      dbms_output.put('bys');
  4      dbms_output.new_line;        --多增加一個new_line,相當於增加換行符--與上一語句相比,輸入中bys和good在不同行。
  5      dbms_output.put('good');
  6      dbms_output.new_line;       
  7      end;
  8      /
hello world!
bys
good

PL/SQL procedure successfully completed.
##################################################################################

3.測試get_line的使用--get_linesi不知道怎麼實驗。。

語句:
var line varchar2(100);
var status number;
 begin
    dbms_output.put_line('hello world!');  
    dbms_output.put('bys');
    dbms_output.new_line;     
    dbms_output.put('good');
    dbms_output.new_line;
    dbms_output.get_line(:line,:status);        
    end;
BYS@ bys3>var line varchar2(100);
BYS@ bys3>var status number;
BYS@ bys3> begin
  2      dbms_output.put_line('hello world!');  
  3      dbms_output.put('bys');
  4      dbms_output.new_line;     
  5      dbms_output.put('good');
  6      dbms_output.new_line;
    dbms_output.get_line(:line,:status);        
    end;
  9      /
bys
good


PL/SQL procedure successfully completed.

相關文章