DBMS_OUTPUT包语法简介及使用小实验

来源:互联网 发布:手机的网络制式参数 编辑:程序博客网 时间:2024/05/22 04:57
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.
0 0
原创粉丝点击