Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLSyntaxErrorException:ORA-00900:使用Java的SQL语句无效_Java - Fatal编程技术网

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

SQLSyntaxErrorException:ORA-00900:使用Java的SQL语句无效,java,Java,我需要通过Java EXEC DBMS_STREAMS_ADM.SET_TAGtag=>HEXTORAW'17'使用以下命令:;使用一个简单的数据库客户端。与其他常见的select/delete查询一起,但它抱怨SQL语句无效 我试图删除exec作为PL/SQL的函数,并用{}调用它,但仍然得到相同的错误 EXEC是SQL*加上Oracle的原生SQL客户端语法,您不能在这里使用它。调用存储过程的JDBC语法是通过CALL指令实现的。您可以省略call标记=>HEXTORAW'17'中的参数名。

我需要通过Java EXEC DBMS_STREAMS_ADM.SET_TAGtag=>HEXTORAW'17'使用以下命令:;使用一个简单的数据库客户端。与其他常见的select/delete查询一起,但它抱怨SQL语句无效

我试图删除exec作为PL/SQL的函数,并用{}调用它,但仍然得到相同的错误

EXEC是SQL*加上Oracle的原生SQL客户端语法,您不能在这里使用它。调用存储过程的JDBC语法是通过CALL指令实现的。您可以省略call标记=>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中如何调用存储过程?请包括您拥有的代码.DBClient.executeexec DBMS_STREAMS_ADM.set_tagtag=>HEXTORAW'17';EXEC是SQL*Plus语法,您不能在这里使用它。您可以改用或调用语法;但它对DBMS\u STREAMS\u ADM的抱怨必须现在就解决。最后出现了一些用户权限问题。谢谢