我可以在JPA 2中的本机查询中使用多个语句

时间:2014-10-03 09:51:35

标签: java sql oracle jpa

我想执行以下查询以有条件地删除临时表。

String dropSql = "BEGIN EXECUTE IMMEDIATE 'DROP TABLE " + tmpTblName + "';" +
    " EXCEPTION" +
    " WHEN OTHERS THEN" +
    " IF SQLCODE!=-942 THEN" +
    " RAISE;" +
    " END IF;" +
    " END";

然后将其作为本机查询执行,如下所示:

JPA.em().createNativeQuery(dropSql)
            .executeUpdate();

然而,JPA不会让我或者更确切地说,oracle db不会。显然是;以某种方式逃脱或误解。

Caused by: java.sql.SQLException: ORA-06550: line 1, column 120:
PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:

; <an identifier> <a double-quoted delimited-identifier>
The symbol ";" was substituted for "end-of-file" to continue.

我是否必须使用单独的查询来实现我的目标,或者是否有一些技巧?

1 个答案:

答案 0 :(得分:2)

最后END阻止后你错过了分号。

String dropSql = "BEGIN EXECUTE IMMEDIATE 'DROP TABLE " + tmpTblName + "';" +
    " EXCEPTION" +
    " WHEN OTHERS THEN" +
    " IF SQLCODE!=-942 THEN" +
    " RAISE;" +
    " END IF;" +
    " END;";