2016-10-11 19 views
0

Oracle XE 11gデータベースでテーブルを作成した後にトリガを作成しようとしましたが、パラメータの欠落が発生しています。GroovyのINまたはOUTパラメータoracleデータベースがありません

 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; 
       """) 

ログ:

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

を使うべきだと思うので、トリガーを作成しようとしています。あなたはそれをエスケープする方法を探したり、何かをバインドするつもりはないとエンジンに知らせる必要があります。 –

+0

あなたが正しいと思われます。 Groovyはそれを回避する方法を文書化していません。とにかくありがとう! – danieljohngomez

答えて

0

sql.callプロシージャを呼び出すようにしようとしています。 new.id`:あなたは、私はGroovyのか分からないが、あなたのツールが `でバインド変数を渡すようにしようとしているように見えるあなたも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; 
       ") 
関連する問題