2012-12-18 193 views
0

我有這樣的代碼:立即執行DBMS_OUTPUT.PUT_LINE

set serveroutput on 

declare 
v_str varchar2(200); 
begin 
v_str := q'!dbms_output.put_line('Hello world');!'; 
Execute immediate v_str; 
end; 

Oracle SQL Developer中說,有無效的SQL語句,有什麼問題呢?

+1

使用'顯示err'對錯誤打印的細節。 – kmkaplan

+0

爲什麼需要使用動態PL/SQL調用dbms_output是否有特殊原因? –

回答

3
declare 
v_str varchar2(200); 
begin 
v_str := q'!begin dbms_output.put_line('Hello world'); end;!'; 
Execute immediate v_str; 
end; 
/

作品...

+4

基本上,答案是'dbms_output'是一個過程,因此只能在PL/SQL塊中執行。 – Ben

+1

@Ben - 真的是對你刪除的答案發表評論的回覆,但在這裏仍然相關; 'q'語法位於[text literals]下的文檔中(http://docs.oracle.com/cd/E14072_01/server.112/e10592/sql_elements003.htm#i42617)。 –