Oracle的dbms_output包的put()和put_line()的區別只是有沒有斷行符號換行嗎?

來源:互聯網
上載者:User

答案是否

除了自動添加斷行符號換行外,還有就是緩衝區最大容量的問題!!

無論如何設定serveroutput size,10g裡

put() 最多隻能輸出 32767 個byte

put_line() 的最大容量為 1000000個byte

 

以下的代碼目的是產生一個oracle資料庫的使用者自訂的預存程序和函數!如果你的使用者代碼足夠長(大於32767),就會發現

使用put()會報錯,而使用put_line()不會報錯!

不過問題是:使用put_line()獲得的代碼都會插入一個空行,十分不爽!我目前還沒想到解決方案,若高手指點,不勝感謝!

 

 

declare
    tablename varchar2(30) := '%';
begin
    for objname in (select distinct TYPE, name
                    from   user_source
                    where  TYPE in ('PROCEDURE', 'FUNCTION')
                           and name like tablename
                    order  by TYPE, name)
    loop
        dbms_output.enable(10000000);
        dbms_output.put('CREATE OR REPLACE' || ' ');
        for output in (select text
                       from   user_source
                       where  name = objname.name
                              and TYPE in ('PROCEDURE', 'FUNCTION')
                       order  by TYPE, name, line)
        loop

/*         dbms_output.put(output.text); --如果使用put則會報錯 */

            dbms_output.put_line(output.text);
        end loop;
       
        dbms_output.put_line('/');
    end loop;

end;

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.