SimpleJdbcCall 找不到存储过程

Posted

技术标签:

【中文标题】SimpleJdbcCall 找不到存储过程【英文标题】:SimpleJdbcCall can't find a stored procedure 【发布时间】:2012-08-23 11:41:05 【问题描述】:

我正在尝试执行存储在我的数据库中的 oracle 过程,我有时会执行它,但是在重命名它或更改某些参数后,我无法再从 spring 执行它了。

我是这样定义的(正文和规格):

CREATE OR REPLACE PACKAGE PTR_GRUPOS_TRABAJO
AS
   PROCEDURE UDPATE_DIA (
--some parameters here
);

我像这样创建 SimpleJdbcCall:

pActualizaDia = new SimpleJdbcCall(dataSource).withCatalogName("PTR_GRUPOS_TRABAJO").withProcedureName("UPDATE_DIA");

在设置(正确)每个参数后,它都会失败。我什至尝试设置 withoutProcedureColumnMetaDataAccess 并声明每个参数,但是虽然这次我得到了每个? (参数)在我的查询中,它仍然抱怨找不到过程,就像这样。

org.springframework.jdbc.BadSqlGrammarException: CallableStatementCallback; bad SQL grammar [call PTR_GRUPOS_TRABAJO.UPDATE_DIA()];

怎么了?谢谢

【问题讨论】:

如果您的存储过程需要参数(正如您的 SP 定义似乎暗示的那样),我看不出您在哪里提供参数。也许这就是你的错误所在? 不,如上所述,我正在设置它们,我排除了代码,因为问题不存在,proc。没有找到,如果有参数不匹配,spring 会说。它无法实现元数据。就像根本没有程序一样。 请原谅我对Spring内部的无知,但是如果你不知道错误在哪里,你怎么能权威地说问题不在于参数声明?可能不是,但肯定最好将您用来调用 SP 的所有代码都放在帖子中,让更了解的人(但可能不是我)做出判断? 当有参数不匹配时,异常跟踪用 PL 错误代码 PLS-306 而不是 PLS-302 明确表示,这是我得到的。无论如何,如果我很抱歉,我不想变得粗鲁,但我的英语有点差,可能听起来不礼貌。下次我还是把所有的代码都放上去,我只是想让它更容易。 【参考方案1】:

好吧……

数据库过程被称为 UDPATE_DIA 而不是 UPDATE_DIA。这是一个既定的程序,我有点阅读障碍。

无论如何,谢谢你 Ollie,我应得的死亡和毁灭。

【讨论】:

完全不是我的朋友。确实会发生这种程序名称混淆,而且很难发现。很高兴你最终找到了答案。

以上是关于SimpleJdbcCall 找不到存储过程的主要内容,如果未能解决你的问题,请参考以下文章

如何在 spring 中使用 SimpleJDBCCall 获取存储过程的结果以及两个结果表?

在安装SAP B1时候出现找不到存储过程的问题

SimpleJdbcCall 不适用于存储的函数

SimpleJdbcCall 忽略 JdbcTemplate 获取大小

SimpleJDBCCall 类参数传递

为啥在集合中找不到 Mysql 存储过程参数?