Ich möchte dieses Skript in PL/SQL auszuführen, aber es hält Fehler immerScript, das andere Skripte 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;
/
Was mit dieser falsch ist.
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:
'@' ist kein SQL (oder PL/SQL) -Befehl. Es ist ein SQL \ * Plus-Befehl und kann nur an der SQL \ * Plus-Eingabeaufforderung verwendet werden. ** Not ** in PL/SQL (weil das auf dem ** Server ** nicht auf dem Client ausgeführt wird) –
Was ist die Lösung, um dies zu korrigieren? –
Entweder erstellte gespeicherte Prozeduren mit den anderen Skripts, die dann von diesem Block ausgeführt werden können, oder implementieren Fehlerbehandlung in jedem der anderen Skripts. Ich würde mich dem zweiten anlehnen, es sei denn, diese Rufstruktur ist eine feste Voraussetzung. –