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
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.
#############################
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.
##################################################################################
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.
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 serveroutputserveroutput 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 onBYS@ 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.