PL/SQL: gibt es eine Anweisung, um vollständig zu stoppen die Ausführung von Skript?

Ich versuche zu tun, einige checkings auf ein DB-schema am Anfang eines PL/SQL-Skript.

Wenn die checkings geben, unterlegen Ergebnisse, ich will halt das Skript, um zu verhindern, dass die nächsten Anweisungen ausgeführt werden.

Ich habe so etwas wie dieses

-- 1st line of PL/SQL script

DECLARE
  SOME_COUNT INTEGER;
BEGIN
  SELECT COUNT(*) INTO SOME_COUNT FROM SOME_TABLE WHERE <SOME_CONDITIONS>;
  IF (SOME_COUNT > 0) THEN
    DBMS_OUTPUT.PUT_LINE('Test failed, I don''want the rest of the script'
      || ' to be executed.');
    --EXIT or something like that?... <= STOP EXECUTION HERE
  END IF;
END;
/

-- OTHER SQL INSTRUCTIONS...
ALTER TABLE SOME_TABLE ...

Ich bin auf der Suche nach der instruction(s) - damit zu tun, die "STOP EXECUTION HERE".

Sind Sie wirklich reden über eine PL/SQL-Skript? Oder ein SQLPlus-Skript? Man kann nicht eine DDL-Anweisung in PL/SQL (es sei denn, Sie steckte es in eine EXECUTE IMMEDIATE). So erscheint es mir, dass Sie reden über eine SQLPlus-Skript. Wenn du redest über ein SQLPlus-Skript, wenn der PL/SQL-block Fehler, SQLPlus wird standardmäßig fortsetzen der Ausführung des nächsten SQL-Anweisung (oder PL/SQL-block) in das Skript. Sie müssten verwenden Sie die SQL*Plus-Befehl WHENEVER SQLERROR EXIT.
Vielen Dank für Ihren Kommentar, Justin. In der Tat bin ich kein "Oracle-Experten", auch wenn ich über gute Kenntnisse von DBMS im Allgemeinen. Also ich habe noch nicht begreifen, den Unterschied zwischen PL/SQL oder SQL*Plus-Skripte (kennst du ein paar Blogs/doc/Website erklären Sie deutlich, dass Sie einen Unterschied?). Alles, was ich sagen kann ist, dass ich mit Navicat, mit dem "Abfrage" - Bereich und laden meine Skript-Datei. In diesem spezifischen Kontext RAISE_APPLICATION_ERROR() macht den job.

InformationsquelleAutor Frosty Z | 2012-01-18

Schreibe einen Kommentar