我想执行以下查询以有条件地删除临时表。
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.
我是否必须使用单独的查询来实现我的目标,或者是否有一些技巧?
答案 0 :(得分:2)
最后END
阻止后你错过了分号。
String dropSql = "BEGIN EXECUTE IMMEDIATE 'DROP TABLE " + tmpTblName + "';" +
" EXCEPTION" +
" WHEN OTHERS THEN" +
" IF SQLCODE!=-942 THEN" +
" RAISE;" +
" END IF;" +
" END;";