SQLSyntaxErrorException:ORA-00900:使用Java的无效SQL语句

时间:2018-06-06 21:10:30

标签: java

我需要使用简单的数据库客户端通过Java EXEC DBMS_STREAMS_ADM.SET_TAG(tag => HEXTORAW('17'));使用以下内容。以及其他常见的选择/删除查询,但它抱怨无效的SQL语句。

我尝试删除exec作为PL / SQL并用{}调用它,但我仍然得到同样的错误。

1 个答案:

答案 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;");