我一直在 Groovy 中的 Oracle 存储过程(在 NiFi 中)中检索单个输出参数,如下所示:
import groovy.sql.SQL
def inParemter = 'send this value to the stored proc'
def errorCount = 0
def conn = (create connection to DB, details are inconsequential here)
def sql = Sql.newInstance(conn)
sql.call('{call MY_SCHEMA.MY_STOREDPROC(?, ?)}', [inParameter, Sql.INTEGER], { ec -> errorCount = ec })
conn.close()
我的问题是,检索多个输出参数的语法是什么?不是这样的:
sql.call('{call MY_SCHEMA.MY_STOREDPROC(?, ?, ?)}', [inParameter, Sql.INTEGER, Sql.VARCHAR], { ec -> errorCount = ec }, { es -> errorString = es})
我也尝试了其他一些方法。谷歌搜索了一下,感觉比较接近,但没人尝试过这个方法。我看到过一些例子:
...{ ec, es -> ... }
但不确定如何形成分配ec
Groovyes
变量的语法。
您尝试为每个 OUT 参数使用两个单独的闭包,但 Groovy 语法只允许对所有 OUT 参数使用一个闭包。
// 不正确:
正确示例:
这是有效的,因为闭包一次性捕获两个 OUT 参数(ec,es)。