oracle系統包—-dbms_output用法

來源:互聯網
上載者:User

標籤:blog   使用   for   re   c   div   

dbms_output包主要用於調試pl/sql程式,或者在sql*plus命令中顯示資訊(displaying message)和報表,譬如我們可以寫一個簡單的匿名pl/sql程式塊,而該塊出於某種目的使用dbms_output包來顯示一些資訊。涉及到的知識點如下:1、enable:在serveroutput on的情況下,用來使dbms_output生效(預設即開啟)2、disable:在serveroutput on的情況下,用來使dbms_output失效3、put:將內容寫到記憶體,等到put_line時一起輸出4、put_line:不用多說了,輸出字元5、new_line:作為一行的結束,可以理解為寫入buffer時的分行符號6、get_line(value, index):擷取緩衝區的單行資訊7、get_lines(array, index):以數組形式來擷取緩衝區的多行資訊需要注意以下幾點:1、set serveroutput on:如果要在sqlplus中看到dbms_output的輸出,則必須設定該參數值為on2、每行能容納的最大值是32767bytes3、buffer的預設值是20000bytes,可設定的最小值為2000bytes,最大值為1000000bytes例子一、put和new_lineset 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;                                                    / 執行運行結果:abhello world!例子二、put_lineset 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;執行結果如下:a    b--- -----------------------0   111111,222222,3333330   444444,555555,6666660   777777,888888,999999註:使用get_line時不能用put_line輸出,因為put_line之後會將buffer清空。(當然在serveroutput off的情況下put_line是不影響buffer的)。例子三:put_linesset 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;                                               /執行結果如下:line oneline twoline three注意數組使用的格式。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.