Já faz algum tempo que venho recuperando um único parâmetro de saída de procedimentos armazenados do Oracle no Groovy (para contexto, no NiFi) assim:
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()
Minha pergunta é: qual é a sintaxe para recuperar mais de um parâmetro out? NÃO é esta:
sql.call('{call MY_SCHEMA.MY_STOREDPROC(?, ?, ?)}', [inParameter, Sql.INTEGER, Sql.VARCHAR], { ec -> errorCount = ec }, { es -> errorString = es})
Tentei outras coisas também. Pesquisei no Google, cheguei perto, mas ninguém tenta exatamente isso. Vi alguns exemplos que:
...{ ec, es -> ... }
Mas não tenho certeza de como formar a sintaxe para atribuir ec
e es
a variáveis Groovy.
Você tentou usar dois fechamentos separados para cada parâmetro OUT. A sintaxe Groovy permite apenas um fechamento para todos os parâmetros OUT.
// Incorreto:
Exemplo correto:
Isso funciona porque o fechamento captura ambos os parâmetros OUT (ec, es) de uma só vez.