在SQL/PLUS中执行下面的PL/SQLWHENEVER SQLERROR EXit 1
declare
  TYPE test_rec IS RECORD(
    Code VARCHAR2(10),
    Name VARCHAR2(30) NOT NULL := 'book');
  V_book test_rec;
  CURSOR c_sal IS SELECT empno, ename, sal FROM emp ;
BEGIN
  V_book.code := '123';
  V_book.name := 'C++ Programming';
  DBMS_OUTPUT.PUT_LINE(v_book.code || v_book.name);
  BEGIN   
   FOR v_sal IN c_sal LOOP 
     DBMS_OUTPUT.put_line( to_char(v_sal.empno)||'---'|| v_sal.ename||'---'|| to_char(v_sal.sal));
   END LOOP;
   
   DBMS_OUTPUT.PUT_LINE('');
  END;
END;然后执行,SQL> spool off;  输出结果可是在最后得到的结果文件中,只有以上执行的SQL语句。 没有DBMS_OUTPUT.put_line的出力结果。
想得到DBMS_OUTPUT.put_line的出力结果,该如何做?
请高手指点。

解决方案 »

  1.   

    --输出没有开
    set serveroutput on
      

  2.   


    SQL> set serveroutput on
    SQL> WHENEVER SQLERROR EXit 1
    SQL> declare
      2    TYPE test_rec IS RECORD(
      3    Code VARCHAR2(10),
      4    Name VARCHAR2(30) NOT NULL := 'book');
      5    V_book test_rec;
      6    CURSOR c_sal IS SELECT empno, ename, sal FROM emp ;
      7  BEGIN
      8    V_book.code := '123';
      9    V_book.name := 'C++ Programming';
     10    DBMS_OUTPUT.PUT_LINE(v_book.code || v_book.name);
     11    BEGIN   
     12    FOR v_sal IN c_sal LOOP  
     13    DBMS_OUTPUT.put_line( to_char(v_sal.empno)||'---'|| v_sal.ename||'---'|| to_char(v_sal.sal)); 14    END LOOP;
     15      
     16    DBMS_OUTPUT.PUT_LINE('');
     17    END;
     18  END;
     19  /
    123C++ Programming
    7369---SMITH---800
    7499---ALLEN---1600
    7521---WARD---1250
    7566---JONES---2975
    7654---MARTIN---1250
    7698---BLAKE---2850
    7782---CLARK---2450
    7788---SCOTT---3000
    7839---KING---5000
    7844---TURNER---1500
    7876---ADAMS---1100
    7900---JAMES---950
    7902---FORD---3000
    7934---MILLER---1300PL/SQL 过程已成功完成。