Unbekannt „SP2-0552: Bind-variable „NEUEN“ nicht deklariert“ – Nachricht auf trigger

Habe ich diese trigger in einem meiner scripts:

    CREATE OR REPLACE TRIGGER MS_DB.DB_TR_IncrementTrialNumber BEFORE INSERT 
ON MS_DB.DB_SUMMARY FOR EACH ROW

begin
    UPDATE MS_DB.DB_Summary SET MS_DB.DB_Summary.TimesGenerated =
        (Select COALESCE(MAX(TimesGenerated),0)+1 
         From MS_DB.DB_Summary
         Where MS_DB.DB_Summary.StepID = :NEW.StepID And 
         MS_DB.DB_Summary.ValidationID = :NEW.ValidationID AND  
         MS_DB.DB_Summary.SummaryDate = :NEW.SummaryDate);
    where MS_DB.DB_Summary.ID = :NEW.ID;
end;
/

Ich benutze TOAD für die Ausführung des Skripts.
Wenn ich „Ausführen als Skript“ – button funktioniert es einwandfrei.
Aber wenn ich es im SQLPlus-Fenster bekomme ich diese Zeile :

SP2-0552: Bind variable "NEW" not declared

Irgendwelche Ideen, warum bekomme ich diese?
Dank

  • :NEW ist ein Platzhalter. Sie wollen nur NEW (keine :), die sich auf die neue Zeile-das ist genau das, was die Fehlermeldung dir sagt „binden NEUE variable nicht deklariert“.
  • Ist es die Emulation der Standard-SQL*Plus Leerzeile Verhalten, vielleicht? In anderen Worten, ist es zu sehen, wird der block als getrennt von der create – funktioniert es, wenn Sie entfernen die leere Zeile vor der begin?
  • Es war Ihre Antwort Alex Poole. Es ist behoben.Dank
  • Was ist ein „SQLPlus-Fenster“? Ist das eine KRÖTE, die Sache, oder meinst du die tatsächliche Oracle SQLPlus? Ich kann Trigger erstellen mit Leerzeilen in SQLPlus ohne set sqlblanklines.
InformationsquelleAutor Al007 | 2016-07-25



One Reply
  1. 3

    Standardmäßig SQL*Plus behandelt eine leere Zeile das Ende einer Anweisung. Die erste Linie, die create nie ausgeführt. Der rest ist ausgeführt als anonymer block, und als es nicht mehr Teil eines trigger-Anweisung die NEW nicht anerkannt.

    Können Sie entweder entfernen Sie die leere Zeile vor der begin oder tun set sqlblanklines auf, bevor Sie beginnen.

    • In der Tat, es war ein weiterer Fehler. Das Semikolon vor, wo die entfernt werden müssen.
    • Ja, schaue nicht auf das, was der Auslöser war eigentlich, aber du hast Recht. Gehst du nicht zu bekommen, einer mutierenden Tabelle Fehler hat, wie Sie codiert haben es? Sie sind Abfragen und aktualisieren (!) das gleiche Tabelle der trigger ist gegen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.