SET SERVEROUTPUT ON buffer 100; 
DECLARE 
error_code NUMBER; 
abc number; 
error_msg VARCHAR2(240); 
CURSOR cur IS SELECT emp_name from emp; BEGIN 
DBMS_OUTPUT.PUT_LINE('cursor opened'); 
open cur; LOOP 
fetch cur into abc; 
DBMS_OUTPUT.PUT_LINE('one data'); 
DBMS_OUTPUT.PUT_LINE(abc||','); 
exit when cur%notFound; 
END LOOP; 
close cur; END; 
/ 输出结果只有 
PL/SQL procedure successfully completed. 
为什么?

解决方案 »

  1.   

    你需要到你的Output页里看你的输出结果
      

  2.   

    SQL> SET SERVEROUTPUT ON buffer 100;
    SQL> DECLARE
      2  error_code NUMBER;
      3  abc number;
      4  error_msg VARCHAR2(240);
      5  CURSOR cur IS SELECT 1 from dual;
      6  
      7  BEGIN
      8  DBMS_OUTPUT.PUT_LINE('cursor opened');
      9  open cur;
     10  
     11  LOOP
     12  fetch cur into abc;
     13  DBMS_OUTPUT.PUT_LINE('one data');
     14  DBMS_OUTPUT.PUT_LINE(abc||',');
     15  exit when cur%notFound;
     16  END LOOP;
     17  close cur;
     18  
     19  END;
     20  /cursor opened
    one data
    1,
    one data
    1,PL/SQL procedure successfully completed有输出阿
      

  3.   

    我把这段代码写在了一个.sql文件里然后 @f.sql
    界面只输出PL/SQL procedure successfully completed也不报任何错误
      

  4.   

    set serveroutput on;写在文件里面总是抱错set serveroutput on;
        *
    ERROR at line 1:
    ORA-00922: missing or invalid option
      

  5.   

    请用spool **.log
    dbms output 只适用于命令行的语句吧?
      

  6.   

    set serveroutput on;
    这个语句应当在运行.sql文件前单独在命令行执行
      

  7.   

    SQL>set serveroutput on;
    SQL>ed a
    DECLARE
    abc number;
    CURSOR cur IS SELECT 1 from dual;BEGIN
    DBMS_OUTPUT.PUT_LINE('cursor opened');
    open cur;LOOP
    fetch cur into abc;
    DBMS_OUTPUT.PUT_LINE('one data');
    exit when cur%notFound;
    END LOOP;
    close cur;
    end;
    /
    SQL>@f
    PL/SQL procedure successfully completed.就是没有输出
      

  8.   

    谁说会报错  你把他在哪里执行呀必须在SQLPLUS下执行 看我的测试:
    SQL> set serveroutput off
    SQL> declare
      2  v_sql varchar2(20);
      3  begin
      4  dbms_output.put_line('1');
      5  dbms_output.put_line('1-1');
      6  dbms_output.put_line('1-1-1');
      7  dbms_output.put_line('1-1');
      8  dbms_output.put_line('1');
      9  end;
     10  /PL/SQL 过程已成功完成。SQL> @d:\cc.sql
    SQL> declare
      2  v_sql varchar2(20);
      3  begin
      4  dbms_output.put_line('1');
      5  dbms_output.put_line('1-1');
      6  dbms_output.put_line('1-1-1');
      7  dbms_output.put_line('1-1');
      8  dbms_output.put_line('1');
      9  end;
     10  /
    1
    1-1
    1-1-1
    1-1
    1PL/SQL 过程已成功完成。D:\CC.SQL文件内容:
    set serveroutput on;
      

  9.   

    就是用你的文件测试的 看看:SQL> @d:\cc.sql
     17  /
    cursor opened
    one data
    one dataPL/SQL 过程已成功完成。
      

  10.   

    DECLARE
    abc number;
    CURSOR cur IS SELECT 1 from dual;BEGIN
    DBMS_OUTPUT.PUT_LINE('cursor opened');
    open cur;LOOP
    fetch cur into abc;
    DBMS_OUTPUT.PUT_LINE('one data');
    exit when cur%notFound;
    END LOOP;
    close cur;
    end;这是文件内容
      

  11.   

    写了个最简单的测试
    SQL> set serveroutput on;
    SQL> begin
      2  dbms_output.put_line('abc');
      3  end;
      4  /PL/SQL procedure successfully completed.SQL> /PL/SQL procedure successfully completed.依旧没有结果
      

  12.   

    嗯,要不楼主换到plsql的command的窗口执行看看吧
      

  13.   

    楼上什么意思?plsql的command窗口?
      

  14.   

    "set serveroutput on;"
    莫非是这个语句多了个‘;’号?
      

  15.   

    不会有这么怪的吧  你是在SQLPLUS中运行的??
      

  16.   

    没错SQLPlus中运行。会不会是字符集的问题?实在想不出为什么
      

  17.   

    set serverout off;
    set serverout on size 1000000;
    begin
    dbms_output.put_line('abc');
    end;
    /可以输出么
      

  18.   

    对于我的来说  照样有输出:SQL> set serveroutput off
    SQL> set serveroutput on size 100000
    SQL> begin
      2  dbms_output.put_line('abc');
      3  end;
      4  /
    abcPL/SQL 过程已成功完成。
      

  19.   

    SET SERVEROUTPUT ON 
    在sql窗口
      

  20.   

    a big mistake ORACLE按装有问题。我的按装完了以后XMLDOM不能用,又重新按的