zoukankan      html  css  js  c++  java
  • Oracle数据库SQL

    第一步:查询语句如下:

    DECLARE
    v_table tabs.table_name%TYPE;
    v_sql VARCHAR2(888);
    v_q NUMBER;
    CURSOR c1 IS
    SELECT table_name tn FROM tabs;
    TYPE c IS REF CURSOR;
    c2 c;
    BEGIN
    DBMS_OUTPUT.PUT_LINE('以下为空数据表的表名:');
    FOR r1 IN c1 LOOP
    v_table :=r1.tn;
    v_sql :='SELECT count(*) q FROM '||v_table||' where rownum = 1';
    OPEN c2 FOR v_sql;
    LOOP
    FETCH c2 INTO v_q;
    EXIT WHEN c2%NOTFOUND;
    IF v_q=0 THEN
    DBMS_OUTPUT.PUT_LINE(v_table);
    END IF;
    END LOOP;
    CLOSE c2;
    END LOOP;
    EXCEPTION
    WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('Error occurred');
    END; /(在plsql developer执行查询语句即可,可以在commd file中也可以直接在查询页面中)

    第二步:但是如果不进行设置的话在plsql developer中执行会报错的;
    报错11:不显示输出结果

    解决方法:设置DBMS_OUTPUT.put_line输出显示    
    SET SERVEROUTPUT ON

    另外还有几个关于DBMS_OUTPUT.put_line的设置:

    2 、关闭DBMS_OUTPUT.put_line输出显示    
    SET SERVEROUTPUT OFF

    3、设置DBMS_OUTPUT缓冲区大小
    SET SERVEROUTPUT ON SIZE number(1000)

    dbms_output.enable(1000)

    4、设置只显示DBMS_OUTPUT默认的长度    

    SET SERVEROUTPUT ON FORMAT TRUNCATED

    5 、设置空格的输出    

    SET SERVEROUTPUT ON FORMAT WRAPPED

    6、取消空格的输出   

     SET SERVEROUTPUT ON FORMAT WORD_WRAPPED

    第三步:要用dbms_output.put_line来输出语句,遇到以下错误:
    ERROR 位于第 1 行:
    ORA-20000: ORU-10027: buffer overflow, limit of 2000 bytes
    ORA-06512: 在"SYS.DBMS_OUTPUT", line 35
    ORA-06512: 在"SYS.DBMS_OUTPUT", line 198
    ORA-06512: 在"SYS.DBMS_OUTPUT", line 139
    ORA-06512: 在"TEST.RUNSTATS_PKG", line 45
    ORA-06512: 在line 1
    这是因为在sqlplus下,如果set serveroutput on此时就会用dbms_output将相关的信息打印到屏幕上,如果sqlplus登录环境没有设置buffer的大小,默认情况下是20000,将打印打开也同时赋予20000的buffer,如果输出超过这个值,则会报以上错误!
    设置更大的buffer值,最大支持1000000!
    可以使用 exec dbms_output.enable(200000)来设置该buffer值。

    注意千万不要忘了exec这个词,否则不会执行的。

  • 相关阅读:
    约束性组件和非约束性组件
    react事件中的事件对象和常见事件
    react事件中的this指向
    【Java】操作数据库
    【设计思想】MVC模式
    【设计思想】面向对象
    【Java】(机考常用)类集
    【Java】机考常用操作
    【数据库】三级模式、二级映射
    【软件测试】圈复杂度
  • 原文地址:https://www.cnblogs.com/luluping/p/1662214.html
Copyright © 2011-2022 走看看