Oracle 系統(tǒng)包——dbms_output

dbms_output包主要用于調(diào)試pl/sql程序,或者在sqlplus命令中顯示信息,譬如我們可以寫一個簡單的匿名pl/sql程序塊,而該塊出于某種目的使用dbms_output包來顯示一些信息

注意:
1.set serveroutput on:如果要在sqlplus中看到dbms_output的輸出,則必須設置該參數(shù)值為on
2.每行能容納的最大值是32767bytes
3.buffer的默認值是20000bytes,可設置的最小值為2000bytes,最大值為1000000bytes

1.enable:在serveroutput on的情況下,用來使dbms_output生效(默認即打開)
2.disable:在serveroutput on的情況下,用來使dbms_output失效
3.put:將內(nèi)容寫到內(nèi)存,等到put_line時一起輸出
4.put_line:輸出字符并換行
5.new_line:作為一行的結(jié)束,可以理解為寫入buffer時的換行符
6.get_line(value, index):獲取緩沖區(qū)的單行信息
7.get_lines(array, index):以數(shù)組形式來獲取緩沖區(qū)的多行信息

例子一、put和new_line

set serveroutput on;
begin
dbms_output.put('a'); --寫入buffer但不輸出
dbms_output.put('b'); --寫入buffer但不輸出
dbms_output.new_line; --回車(換行),輸出
dbms_output.put_line('hello world!'); --輸出并換行
dbms_output.put('d'); --寫入buffer但不輸出
end;
/
執(zhí)行運行結(jié)果:
ab
hello world!

例子二、put_line

set serveroutput off;
create table t(a int, b int, c int);
insert into t values(111111,222222,333333);
insert into t values(444444,555555,666666);
insert into t values(777777,888888,999999);
commit;

create table tt(a int,b varchar2(100));

declare
msg varchar2(120);
cursor t_cur is select * from t order by a;
v_line varchar2(100);
v_status integer := 0;
begin
dbms_output.enable;
for i in t_cur loop
msg := i.a || ',' || i.b || ',' || i.c;
dbms_output.put_line(msg); --put
end loop;

dbms_output.get_line(v_line, v_status); --get
while v_status = 0 loop
insert into tt values(v_status, v_line);
dbms_output.get_line(v_line, v_status);
end loop;
end;
/

select * from tt;
執(zhí)行結(jié)果如下:

a b


0 111111,222222,333333
0 444444,555555,666666
0 777777,888888,999999
注:使用get_line時不能用put_line輸出,因為put_line之后會將buffer清空。(當然在serveroutput off的情況下put_line是不影響buffer的)。

例子三:put_lines

set serveroutput on;
declare
v_data dbms_output.chararr;
v_numlines number;
begin
--enable the buffer first.
dbms_output.enable(1000000);

dbms_output.put_line('line one');
dbms_output.put_line('line two');
dbms_output.put_line('line three');

v_numlines := 3;
dbms_output.get_lines(v_data, v_numlines); --array, index
for v_counter in 1..v_numlines loop
dbms_output.put_line(v_data(v_counter));
end loop;
end;
/
執(zhí)行結(jié)果如下:

line one
line two
line three
注意數(shù)組使用的格式。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • ORACLE自學教程 --create tabletestone ( id number, --序號usernam...
    落葉寂聊閱讀 1,242評論 0 0
  • oracle存儲過程常用技巧 我們在進行pl/sql編程時打交道最多的就是存儲過程了。存儲過程的結(jié)構(gòu)是非常的簡單的...
    dertch閱讀 3,615評論 1 12
  • 我是有那些毛病的,關于社交恐懼,甚至自閉。 不恰當?shù)慕佑|來打招呼,缺乏和他人分享的意愿,對叫到名字充耳不聞,說話時...
    有緣千里懶羊羊閱讀 157評論 0 0
  • 我家的小貓咪非常漂亮。全身雪白,沒有一根雜毛。頭呢是三角形的,兩個豎起的耳朵很長,可以向四面八方轉(zhuǎn)來轉(zhuǎn)去。身...
    小小張_83690閱讀 338評論 0 2
  • 注:文中草藥療效皆自《本草綱目》,僅供創(chuàng)作參考,不具備現(xiàn)實功效。 玫瑰,又叫徘徊花、筆頭花、湖花,薔薇屬,原產(chǎn)中國...
    貴鬼先生閱讀 2,382評論 3 20

友情鏈接更多精彩內(nèi)容