[英]ORA-00900: invalid SQL statement while exporting an Oracle database from Java
[英]Error ORA-00900 while calling a Oracle Function from Java
我在尝试从代码中调用 Oracle function 时收到ORA-00900错误,而它在 sqldeveloper 中有效。 我试图从中调用 Oracle function 的代码如下。
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: invalid SQL 语句
根据JavaDoc :
该接口用于执行SQL存储过程。 JDBC API 提供了存储过程 SQL 转义语法,允许以标准方式为所有 RDBMS 调用存储过程。 这种转义语法有一种形式包含结果参数,另一种形式不包含。 如果使用,结果参数必须注册为 OUT 参数。 其他参数可用于输入,output 或两者兼而有之。 参数按编号顺序引用,第一个参数为 1。
{?= call <procedure-name>[(<arg1>,<arg2>, ...)]}
{call <procedure-name>[(<arg1>,<arg2>, ...)]}
看起来{?=
之间不应该有空格,而你有空格。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.