2016-10-10 78 views
0

我想執行的PL/SQL這個腳本但它一直得到錯誤的腳本Exec的其他腳本

set serveroutput on; 
set echo on; 
declare 
    v_code varchar2(250); 
    v_errm varchar2(250); 
begin 
    @@"1.sql"; 
    @@"2.sql"; 
    @@"II_load_438865311678_Reg.sql"; 
exception 
when others then 
    v_code := sqlcode; 
    v_errm := substr(sqlerrm, 1, 64); 
    DBMS_OUTPUT.PUT_LINE('ERROR! - '||DBMS_UTILITY.FORMAT_ERROR_STACK|| DBMS_UTILITY.FORMAT_ERROR_BACKTRACE); 
    rollback; 
end; 
/

什麼是錯。

Error: ORA-06550: line 5, colunm 3: (...) ORA-06550: line 6, colunm 3: (...) ORA-06550: line 7, colunm 3: PLS-00103: Encountered the symbol "@" when expecting one of the following: (begin case declare end exception exit for goto if loop mod null pragma raise return select update while with... and 06550. 00000 - "line %s, column %s:\n%s" *Cause: Usually a PL/SQL compilation error. *Action:

+1

'@'不是SQL(或PL/SQL)命令。這是一個SQL \ * Plus命令,只能在SQL \ * Plus命令提示符下使用。 **不**在PL/SQL內部(因爲它在**服務器上運行**而不是在客戶端上運行) –

+0

解決方法是什麼? –

+0

可以使用其他腳本創建存儲過程,然後可以通過此塊運行,或者在其他每個腳本中實現錯誤處理。我會傾向於第二,除非這個呼叫結構是一個堅定的要求。 –

回答

0

您只使用PL/SQL代碼來顯示錯誤。這是沒有必要的; SQL * Plus將已經向您顯示任何SQL錯誤。使用whenever sqlerror觸發回滾。

whenever sqlerror continue rollback 
@@"1.sql" 
@@"2.sql" 
@@"II_load_438865311678_Reg.sql"