Java 消息:ORA-04079:eclipse中的触发器规范无效
下面提到的sql触发器在oracle sql plus中正确执行Java 消息:ORA-04079:eclipse中的触发器规范无效,java,sql,eclipse,oracle,oracle10g,Java,Sql,Eclipse,Oracle,Oracle10g,下面提到的sql触发器在oracle sql plus中正确执行 CREATE OR REPLACE TRIGGER test_trigger BEFORE INSERT ON RESULTS REFERENCING NEW AS NEW FOR EACH ROW BEGIN SELECT Pd_seq.nextval INTO :NEW.PT_ID FROM dual; END; / 但同样的代码,当通过java实现时,抛出了以下错误 代码: Eclipse中的错误消息:
CREATE OR REPLACE TRIGGER test_trigger
BEFORE INSERT ON RESULTS
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT Pd_seq.nextval INTO :NEW.PT_ID FROM dual;
END;
/
但同样的代码,当通过java实现时,抛出了以下错误
代码:
Eclipse中的错误消息:
SQL Exception:
State : 42000
Message: ORA-04079: invalid trigger specification
Error : 4079
请帮忙。导致错误的原因是什么?您需要在每行后面插入空格或\n。例如:
ResultSet rs1 = stmt.executeQuery("CREATE OR REPLACE TRIGGER test_trigger123\n"+
"BEFORE INSERT ON RESULTS\n"+
"REFERENCING NEW AS NEW\n"+
"FOR EACH ROW\n"+
"BEGIN\n"+
"SELECT Pd_seq.nextval INTO :NEW.PT_ID FROM dual;\n"+
"END;\n"+
"\n/");
如果您尝试像现在这样执行它,它将如下所示:
stmt.executeQuery("CREATE OR REPLACE TRIGGER test_trigger123 BEFORE INSERT ON RESULTSREFERENCING NEW AS NEWFOR EACH ROWBEGINSELECT Pd_seq.nextval INTO :NEW.PT_ID FROM dual;END;\n/");
这就是为什么你必须在线条后面加空格
ResultSet rs1 = stmt.executeQuery("CREATE OR REPLACE TRIGGER test_trigger123 "+
"BEFORE INSERT ON RESULTS "+
"REFERENCING NEW AS NEW "+
"FOR EACH ROW "+
"BEGIN "+
"SELECT Pd_seq.nextval INTO :NEW.PT_ID FROM dual; "+
"END; "+
"\n/");
ResultSet rs1 = stmt.executeQuery("CREATE OR REPLACE TRIGGER test_trigger123 "+
"BEFORE INSERT ON RESULTS "+
"REFERENCING NEW AS NEW "+
"FOR EACH ROW "+
"BEGIN "+
"SELECT Pd_seq.nextval INTO :NEW.PT_ID FROM dual; "+
"END; "+
"\n/");