我需要使用简单的数据库客户端通过Java EXEC DBMS_STREAMS_ADM.SET_TAG(tag => HEXTORAW('17'));
使用以下内容。以及其他常见的选择/删除查询,但它抱怨无效的SQL语句。
我尝试删除exec作为PL / SQL并用{}调用它,但我仍然得到同样的错误。
答案 0 :(得分:1)
EXEC
是SQL * Plus(Oracle的本机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;");