2016-10-11 5 views
0

Ich versuche, einen Trigger zu erstellen, nachdem eine Tabelle in einer Oracle XE 11g-Datenbank erstellt wurde, aber ich bekomme einen fehlenden Parameterfehler.Fehlender IN- oder OUT-Parameter Oracle-Datenbank auf groovy

 sql.execute("CREATE TABLE flows (id NUMBER PRIMARY KEY NOT NULL,name VARCHAR2(50) NOT NULL,package VARCHAR2(50) NOT NULL,content VARCHAR2(4000),status VARCHAR2(50),nextRun NUMBER)") 
     sql.execute('CREATE SEQUENCE id_seq') 
     sql.call(""" 
        CREATE OR REPLACE TRIGGER id_trig 
        BEFORE INSERT ON FLOWS 
        FOR EACH ROW 
        BEGIN 
         SELECT id_seq.nextval into :new.id FROM dual; 
        END; 
       """) 

Logs:

Oct 11, 2016 10:40:45 AM groovy.sql.Sql call 
WARNING: Failed to execute: 
        CREATE OR REPLACE TRIGGER id_trig 
        BEFORE INSERT ON FLOWS 
        FOR EACH ROW 
        BEGIN 
         SELECT id_seq.nextval into :new.id FROM dual; 
        END; 
        because: Missing IN or OUT parameter at index:: 1 
+3

Ich weiß nicht, Groovy verwenden sollten, aber es sieht aus wie Ihr Werkzeug versucht, ein Bind-Variable zu übergeben an den ': new.id'. Sie müssen nachsehen, wie Sie dem entkommen oder der Engine signalisieren, dass Sie nichts binden wollen. –

+0

Es scheint, dass Sie Recht haben. Groovy stellt keine Dokumentation zur Verfügung, um dem zu entkommen. Danke trotzdem! – danieljohngomez

Antwort

0

sql.call versucht Prozedur aufzurufen. Du gehst Trigger zu erstellen, damit ich glaube, Sie auch sql.execute

sql.execute(" 
        CREATE OR REPLACE TRIGGER id_trig 
        BEFORE INSERT ON FLOWS 
        FOR EACH ROW 
        BEGIN 
         SELECT id_seq.nextval into :new.id FROM dual; 
        END; 
       ") 
Verwandte Themen