的脚本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:
答
您只使用PL/SQL代码来显示错误。这是没有必要的; SQL * Plus将已经向您显示任何SQL错误。使用whenever sqlerror
触发回滚。
whenever sqlerror continue rollback
@@"1.sql"
@@"2.sql"
@@"II_load_438865311678_Reg.sql"
'@'不是SQL(或PL/SQL)命令。这是一个SQL \ * Plus命令,只能在SQL \ * Plus命令提示符下使用。 **不**在PL/SQL内部(因为它在**服务器上运行**而不是在客户端上运行) –
解决方法是什么? –
可以使用其他脚本创建存储过程,然后可以通过此块运行,或者在其他每个脚本中实现错误处理。我会倾向于第二,除非这个呼叫结构是一个坚定的要求。 –