1、概述
作用:用於輸入和輸出信息,使用過程PUT和PUT_LINES可以將信息發送到緩沖區,使用過程GET_LINE和GET_LINES可以顯示緩沖區信息。
該包用來輸出plsql變量的值,屬於系統用戶sys。下面講述包的組成:
2、包的組成
1)、ENABLE
說明:該過程用於激活本包,如果沒有被激活,將無法調用本包的其它其余過程和函數。當調用該過程,緩沖區最大尺寸為1000000字節,最小為2000字節,默認為20000字節。
注意:如果在SQL*PLUS中使用SERVEROUTPUT選項,則沒有必要使用該過程。
語法:DBMS_OUTPUT.ENABLE(buffer_size in integer default 20000);
2)、DISABLE
說明:該過程用於禁止本包,並清除緩沖區的內容。當本包被禁止,將無法調用本包的其它其余過程和函數。
注意:如果在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);
當在sql*plus中使用包過程put、put_line時,需要設置serveroutput選項。
例子:
set serveroutput on
begin
dbms_output.put_line('偉大的中華民族');
dbms_output.put('中國');
dbms_output.put(',偉大的祖國');
dbms_output.new_line;
end;
4)、new_line
說明:該過程用於在行的尾部追加行結束符。
語法:dbms_output.new_line;
5)、get_line和get_lines
說明:過程get_lin用於取得緩沖區的單行信息,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指定要檢索的行數,並返回實際檢索的行數。
3、包的應用實例
1)、例子一
var line varchar2(100);
var status number
begin
dbms_output.enable;
dbms_output.put_line('偉大的中華民族');
dbms_output.put('中國');
dbms_output.put(',偉大的祖國');
dbms_output.put.new_line;
dbms_output.get_line(:line,:status);
end;
2)、例子二
declare
type line_table_type is table of varchar2(255) index by binary integer;
line_table line_table_type;
lines number(38):=3;
begin
dbms_output.enable;
dbms_output.put_line('偉大的中華民族');
dbms_output.put('中國');
dbms_output.put(',偉大的祖國');
dbms_output.put.new_lines;
dbms_output.get_line(line_table,lines);
end;