【问题标题】:How do I retrieve the return value from a stored function call in groovy?如何从 groovy 中的存储函数调用中检索返回值?
【发布时间】:2015-10-02 00:46:13
【问题描述】:

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

【问题讨论】:

    标签: oracle groovy


    【解决方案1】:

    该方法的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 -> }

    【讨论】:

    • 看起来我需要在闭包中放入两个值: sql.call("""{? = call get_job(?, ?)}""", [Sql.VARCHAR, 'TE' , Sql.NUMERIC]) { retVal, row -> println row println retVal }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-06
    • 2010-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    相关资源
    最近更新 更多