在JPA / Hibernate中执行本机SQL脚本 - 意外的令牌:语句中的BEGIN [BEGIN]

时间:2013-10-03 07:27:10

标签: sql oracle hibernate jpa

您好我试图执行本机查询:

String script = " Insert into ASSIGNMENT_GROUP (OID,VERSION,DEPARTMENT,NAME) values ('abf7e0e086f311e29e960800200c9a66','0','KS','4441'); ";

(该脚本将包含多个插入,但当我只使用一个时它已经失败了)

使用此方法:

public void runNativeScript(String script) {
    Query q = oracleMgr.createNativeQuery("BEGIN "+script + "END;");
    q.executeUpdate();
}

并收到以下错误:

Caused by: java.sql.SQLException: Unexpected token: BEGIN in statement [BEGIN]

如果我删除了Begin和End单词,脚本将执行没有任何问题,但由于我要在一个脚本中执行多次插入,我需要BEGIN和END。

任何人都可以帮助我,告诉我出了什么问题吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

尝试这样的事情:

public void runNativeScript(String script) {
    Query q = oracleMgr.createNativeQuery("{ call BEGIN " + script + " END }");
    q.executeUpdate();
}

这是标准的SQL92语法。您可以在http://docs.oracle.com/cd/E11882_01/java.112/e16548/getsta.htm#JJDBC28075中看到示例。