在从代码中调用函数时,我得到了Oracle 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语句引起
发布于 2019-10-15 13:41:29
用于执行SQL存储过程的接口。JDBC提供了存储过程SQL转义语法,允许以标准方式对所有RDBMS调用存储过程。这个转义语法有一个表单,它包含一个结果参数,另一个没有。如果使用,则必须将结果参数注册为OUT参数。其他参数可用于输入、输出或两者兼用。参数按编号依次引用,第一个参数为1。
{?= call <procedure-name>[(<arg1>,<arg2>, ...)]}{call <procedure-name>[(<arg1>,<arg2>, ...)]}
看起来{?=之间应该没有空格,而您有空格。
https://stackoverflow.com/questions/58396018
复制相似问题