Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 消息:ORA-04079:eclipse中的触发器规范无效_Java_Sql_Eclipse_Oracle_Oracle10g - Fatal编程技术网

Java 消息:ORA-04079:eclipse中的触发器规范无效

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中的错误消息:

下面提到的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中的错误消息:

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