java - SQLSyntaxErrorException : ORA-00900: invalid SQL statement using Java

标签 java

我需要使用简单的数据库客户端通过 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/

相关文章:

java - 将文本转换为图片消息?

java - Intellij 添加 jar 作为源

java - 如何加密来自url的视频并将加密的视频保存到设备的SD卡

java - 如何将具有唯一字段的对象添加到 Set

java - 在 ListView 中从 apk 文件加载许多图标

java - Netflix 空心范围查询?

java - 如何使用 JNI 在 Delphi 中设置日期

java - 通过网络写入数据

java - 不同屏幕分辨率的 Swing 尺寸问题

自 Android 6 Marshmallow 以来,javax.crypto.Cipher 的工作方式有所不同