zoukankan      html  css  js  c++  java
  • dbms_output缓冲区溢出

    在执行如下sql语句时:

    set serveroutput on;
    declare
      
    --循环所需表
        cursor cur_t_zhcxb is
        
    select * from bmrs.t_zhcxb;
    begin
       
    for rec_t_zhcxb in cur_t_zhcxb loop
        
    begin
          dbms_output.put_line(
    'insert into t_zhcxb value('''|| rec_t_zhcxb.f_ywbm||' '')');
        
    end;
       
    end loop;
    end;

    出现错误:

    ERROR 位于第 1 行:
    ORA
    -20000: ORU-10027: buffer overflow, limit of 2000 bytes
    ORA
    -06512: 在"SYS.DBMS_OUTPUT", line 34
    ORA
    -06512: 在"SYS.DBMS_OUTPUT", line 118
    ORA
    -06512: 在"SYS.DBMS_OUTPUT", line 81
    ORA
    -06512: 在line 9

    在ITPUB论坛上一查发现有人问过类似问题:
    http://www.itpub.net/514002.html
    解决方法如下:
    1、用dbms_output.enable( )设定长度.
    DBMS_OUTPUT.ENABLE (buffer_size IN INTEGER DEFAULT 20000); 
    (注:该方法按如上设置没成功,直接DBMS_OUTPUT.ENABLE (20000);则成功执行)
    2、也可以SET SERVEROUTPUT ON SIZE 5000

    其中1方法仅对当次设定有效,删除后仍会提示错误,而2方法是修改配置信息,如果不关闭Sql*plus的该设定仍然存在。

  • 相关阅读:
    C++互斥器:Semaphores
    C++互斥器:Mutex
    内联函数(inline)
    C++显式转换
    线程同步控制
    拷贝构造函数——防篡改
    extern关键字
    虚析构、纯虚析构
    类的友元关系
    char 与 unsigned char的本质区别
  • 原文地址:https://www.cnblogs.com/xinyuxin912/p/469195.html
Copyright © 2011-2022 走看看