2016-10-11 76 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

我不知道Groovy的,但它看起來像你的工具試圖通過在'綁定變量:new.id'。你需要查看如何逃避,或以其他方式向引擎發出信號,表明你不打算綁定任何東西。 –

+0

看來你是對的。 Groovy沒有提供如何逃避的文檔。不管怎麼說,還是要謝謝你! – danieljohngomez

回答

0

sql.call試圖調用程序。你要創建觸發器,我想你也應該使用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; 
       ") 
相關問題