的脚本Exec的其他脚本

问题描述:

我想执行的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

可以使用其他脚本创建存储过程,然后可以通过此块运行,或者在其他每个脚本中实现错误处理。我会倾向于第二,除非这个呼叫结构是一个坚定的要求。 –

您只使用PL/SQL代码来显示错误。这是没有必要的; SQL * Plus将已经向您显示任何SQL错误。使用whenever sqlerror触发回滚。

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