與執行直接和錯誤處理做約兩個小時的價值的研究上的各種問題之後,我不認爲我遇到的正是我要提出的問題。我已將問題簡化爲下面的示例。問題是:甲骨文執行DDL立即模式和錯誤
當我執行一個程序創建即時模式在變量中創建文本和語法錯誤,在創建文本時,執行立即調用拋出,表明它失敗的錯誤。但我無法瞭解潛在的錯誤或其文本。
然而,當我在sqlplus直接創建相同PROC(W/O中間模式)時,得到錯誤完美。
那麼,如何在一個導致即時模式失敗的錯誤得到什麼?
我已經穿插的輸出與我的評論(MOP),減少的空白行數:
SQL*Plus: Release 10.2.0.1.0 - Production on Mon Mar 25 15:57:06 2013
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> set serveroutput on
SQL> declare
2 eSQL varchar(568);
3 begin
4 eSQL := 'create or replace procedure MOPMOP
5 as
6 begin
7 select 1 from dual;
8 end;
9 ';
10 execute immediate eSQL;
11 end;
12/
ERROR:
ORA-24344: success with compilation error
ORA-06512: at line 10
Warning: PL/SQL compilation errors.
這是一件好事。有一個編譯錯誤。所以,現在讓我問一下那個編譯錯誤是什麼:
SQL> show errors;
No errors.
這是不行的。有一個編譯錯誤。它以前如何!?!?!?與此相反:
SQL> create or replace procedure MOPMOP
2 as
3 begin
4 select 1 from dual;
5 end;
6/
Warning: Procedure created with compilation errors.
這很好。有一個編譯錯誤。所以,現在讓我來問一下那個編譯錯誤是什麼:
SQL> show errors;
Errors for PROCEDURE MOPMOP:
LINE/COL ERROR
-------- -----------------------------------------------------------------
4/5 PLS-00428: an INTO clause is expected in this SELECT statement
SQL>
這很好。有一個編譯錯誤。現在我知道這是什麼。
那麼,如何才能獲得中間模式吐出底層(00428)錯誤?
我認爲他的代碼只是說明的需要,使我們能夠重現問題。 – 2013-03-25 22:59:49
當然...我希望他學會了關於顯示錯誤... – Art 2013-03-26 13:15:41
是的,這只是一個repro。 – mpersico 2013-03-26 16:48:34