我需要使用简单的数据库客户端通过 Java EXEC DBMS_STREAMS_ADM.SET_TAG(tag => HEXTORAW('17'));
使用以下内容。与其他常见的选择/删除查询一起使用,但它提示无效的 SQL 语句。
我尝试删除 PL/SQL 的 exec 并使用 {} 调用它,但仍然遇到相同的错误。
最佳答案
EXEC
是 SQL*Plus(Oracle 的 native SQL 客户端)语法,您不能在此处使用它。调用存储过程的 JDBC 语法是通过 CALL
指令实现的。您可以在调用中省略参数名称 (tag => HEXTORAW('17')
)。例如:
try (CallableStatement cs
= myConnection.prepareCall("{ call DBMS_STREAMS_ADM.SET_TAG(HEXTORAW(?)) }")) {
cs.setString(1, "17");
cs.execute();
}
尚不清楚您当前使用的是哪个DBClient
(请告诉我们),但以下可能也有效:
DBClient.execute("{ call DBMS_STREAMS_ADM.set_tag(HEXTORAW('17')) }");
或者然后
DBClient.execute("begin DBMS_STREAMS_ADM.SET_TAG(HEXTORAW('17')); end;");
关于java - SQLSyntaxErrorException : ORA-00900: invalid SQL statement using Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50729665/