我正在尝试调用Oracle中的存储函数。此函数不仅具有返回值,还具有OUT参数。我是Groovy的新手,但有很多数据库经验。如何检索返回的实际值。这是我的示例调用...假设我已经有一个很好的数据库连接。
我有一个具有以下签名的商店功能:
GET_JOB(job_id IN VARCHAR2, max_sal OUT INTEGER) RETURNS VARCHAR2
我在groovy中打电话:
def result = sql.call("{? = call get_job(?, ?)}", [Sql.VARCHAR, 'TE', Sql.NUMERIC])
这似乎运行没有错误,但我不知道如何检索返回值和OUT参数(第二个参数)
答案 0 :(得分:0)
该方法的int Sql.call(String, List)
形式不处理输出参数。您可以改为使用void Sql.call(String, List, Closure)
。
sql.call("{? = call get_job(?, ?)}", [Sql.VARCHAR, 'TE', Sql.NUMERIC]) { maxSal ->
// do whatever with maxSal
}
注意:如果您获得存储过程的返回值而不是out参数,请尝试:sql.call(...) { ret, maxSal -> }