如何从groovy中存储的函数调用中检索返回值?

时间:2015-10-02 00:46:14

标签: oracle groovy

我正在尝试调用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参数(第二个参数)

1 个答案:

答案 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 -> }