stored-procedures - 使用 groovy.sql Out 参数时出错

标签 stored-procedures grails groovy

我正在尝试以常规方式执行一些存储过程。通过使用直接的 JDBC,我可以很容易地做到这一点,但这似乎不符合 Grails 的精神。

我试图将存储过程称为:

sql.query( "{call web_GetCityStateByZip(?,?,?,?,?)}",[params.postalcode, 
sql.out(java.sql.Types.VARCHAR), sql.out(java.sql.Types.VARCHAR), 
sql.out(java.sql.Types.INTEGER), sql.out(java.sql.Types.VARCHAR)]) { rs ->
   params.city = rs.getString(2)
   params.state = rs.getString(3)
}

我尝试了各种方法,例如 sql.call .在此之后我试图获取输出变量值。

每次错误:
Message: Cannot register out parameter. 
Caused by: java.sql.SQLException: Cannot register out parameter. 
Class: SessionExpirationFilter 

但这似乎不起作用。

谁能指出我正确的方向?

最佳答案

这仍然没有答案,所以我做了一些挖掘,虽然我不完全理解这个问题。以下来自 Groovy 源代码,也许它有一些帮助:

这条线似乎是异常的起源:

http://groovy.codehaus.org/xref/groovy/sql/Sql.html#1173

这似乎表明您有一个实现 PreparedStatement 的 Statement 对象,当您需要子接口(interface) CallableStatement 时,它具有应该最终调用的 registerOutParameter() 方法。

关于stored-procedures - 使用 groovy.sql Out 参数时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/103136/

相关文章:

grails - 如何使用 gradle bootRun 通过 https 在本地运行 Grails 3 应用程序

java - 如何在Gradle 5.x中使用自定义插件排除已解决的插件?

java - 如何在geb中下载zip文件到当前目录?

grails - 在grails中获取动态bean字段

sql-server - 如何让一个事务覆盖多个存储过程?

mysql - 有没有办法以任意顺序将参数传递给 MySQL 存储过程?

Grails 2.5.0 - 无法创建数据并将其链接到服务中的另一个对象

mysql - 存储过程如何返回值

MySQL存储过程插入验证

grails - 读出 Grails-Controller 中的所有 Action