java - 服务器启动期间,index::error 处缺少 IN 或 OUT 参数?

标签 java oracle

目前,在我们的一个应用程序中,我们遇到以下错误:

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/

相关文章:

java - 我的应用程序显示 "The application may be doing too much work on its main thread.",我不知道代码的哪一部分导致了此问题

java - SolrTemplate 和 SolrClient 有什么区别?

sql - 一次撤销多个用户的 Oracle 权限

sql - ORACLE:物化 View 的快速刷新在某些情况下不适用于 OUTER JOIN

sql - 在 Oracle 11g 上双查询的性能如何

java - Http 身份验证客户端库

java - Hadoop循环 reducer

java - 检测 Windows 还是 Linux?

xml - 从 PL/SQl 中的 xml 中提取元素

oracle - Oracle 11G 连接字符串中的 SDU 设置