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.