目前,在我们的一个应用程序中,我们遇到以下错误:
org.springframework.jdbc.UncategorizedSQLException: CallableStatementCallback; uncategorized SQLException for SQL [{call test_pkg.set_user_details(?)}?)}]; SQL state [99999]; error code [17041]; Missing IN or OUT parameter at index:: 2; nested exception is java.sql.SQLException: Missing IN or OUT parameter at index:: 2
程序主体:
PROCEDURE set_user_details(ID NUMBER DEFAULT -1)
IS
BEGIN
//
//
END set_user_details;
Java 或 DB 代码没有问题。相同的代码长期以来一直在工作,并且最近没有更改。
从 Java 代码中,我们将单个参数传递给该存储过程。 这是一个间歇性的问题。仅当我们重新启动服务器时才会发生这种情况。据我所知,发生这种情况是因为如果我们在服务器启动期间执行任何事务, 数据库和应用程序可以处于不同的状态,并且这两个状态不会同步。如果我错了,请纠正我。
我的问题是,如果它是与状态相关的问题,那么为什么它给出在索引::2处缺少 IN 或 OUT 参数
而不是给出与状态相关的错误\异常?
另外,即使该存储过程只接受一个 param ,该异常也表示索引 2 处缺少参数。为什么它期望参数位于索引 2 处?
目前我们使用Oracle 12c并使用JdbcTemplate来执行存储过程
谢谢
最佳答案
这是准备好的语句的问题,它是 [{call test_pkg.set_user_details(?)}?)}];
但绝对应该是 [{call test_pkg.set_user_details(?) }];
- 不知怎么的,?)}
部分加倍了...
关于java - 服务器启动期间,index::error 处缺少 IN 或 OUT 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59171685/