Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.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
从Java调用Oracle函数时出现错误ORA-00900_Java_Spring_Oracle_Spring Boot - Fatal编程技术网

从Java调用Oracle函数时出现错误ORA-00900

从Java调用Oracle函数时出现错误ORA-00900,java,spring,oracle,spring-boot,Java,Spring,Oracle,Spring Boot,在尝试从代码中调用Oracle函数时,我遇到了ORA-00900错误,而它可以从sqldeveloper中工作。 下面是我试图调用Oracle函数的代码 passwordCriteria = session.doReturningWork(connection -> { try (CallableStatement function = connection .prepareCall("{ ? = call t

在尝试从代码中调用Oracle函数时,我遇到了ORA-00900错误,而它可以从sqldeveloper中工作。 下面是我试图调用Oracle函数的代码

        passwordCriteria = session.doReturningWork(connection -> {
            try (CallableStatement function = connection
                    .prepareCall("{ ? = call test$ui_mob.password_change (?,?,?,?) }")) {
                function.setEscapeProcessing(false);
                function.registerOutParameter("p_response", Types.VARCHAR);
                function.setString("p_username", "TEST_USER");
                function.setString("p_companycode", "BSH");
                function.setString("p_deviceid", "123456798");
                function.setString("p_language", "en");
                function.executeQuery();
                return function.getString(1);
            }
        });
    }
堆栈跟踪是

原因:java.sql.SQLSyntaxErrorException:ORA-00900:无效的sql 声明

根据:

用于执行SQL存储过程的接口。JDBCAPI提供了一种存储过程SQL转义语法,允许以标准方式为所有RDBMS调用存储过程。此转义语法有一个包含结果参数的表单和一个不包含结果参数的表单。如果使用,结果参数必须注册为输出参数。其他参数可用于输入、输出或两者。参数按编号顺序引用,第一个参数为1

{?=call[(,,…])}

{call[(,,…])}


看起来
{?=
之间应该没有空格,而您有空格。

您能更改所有者名称吗?$char可能是问题所在