Нет сигнатуры метода: groovy.sql.sql.callwithallrows () применим для типов аргументов

Я вызываю хранимую процедуру sql через Groovy-метод groovy.sql.Sql.callWithAllRows, который не требует параметров и возвращает только набор результатов. Но при выдаче следующего метода с пустым корпусом он терпит неудачу из-за «Нет сигнатуры метода: groovy.sql.Sql.callWithAllRows () применим для типов аргументов» Я предполагаю, что вы можете сделать callWithAllRows без отправки параметров, это правильно, поскольку хранимая процедура их не требует?

Вот вызов, который терпит неудачу:

    List<List<GroovyRowResult>> results = sql.callWithAllRows("{call 
    myStoredProcedure()}",[],{});
    results.each { result ->
        result.each { row ->
            row.each {                   
                println(it.FormalName.toString())
            }
        }
    }

Моя сохраненная процедура

 CREATE PROCEDURE myStoredProcedure 
 AS
 BEGIN
   SELECT TOP 10 Title + ' ' + FirstName + ' ' + LastName AS FormalName 
   FROM Person.Contact
 END
0
0
461
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Правильный синтаксис

def rowsList = sql.callWithAllRows '{call myStoredProcedure()}',[],{
    result ->
}

Вот ссылка: http://docs.groovy-lang.org/latest/html/gapi/groovy/sql/Sql.html#callWithAllRows(java.lang.String,%20List%3CObject%3E,%20groovy.lang.Closure)

Я отметил это как ответ. Каким-то образом это отлично работает в моей системе разработки с Groovy 2.48, но в развернутой системе с Groovy 2.19 все равно возникает та же ошибка. Есть ли способ выполнить эту же технику и получить resultSet / w вызовом, подобным этому sql.call '{call myStoredProcedure ()}', [], {result ->}

user7071176 13.09.2018 22:57

Проблема в том, что в Groovy 2.1.9 call(Gstring gstring, List list, Closure closure) возвращает void. docs.groovy-lang.org/docs/groovy-2.1.9/html/gapi/groovy/sql/‌…

Fullstack Guy 13.09.2018 23:04

Если я не ошибаюсь, ResultSet отправляется как закрывающая переменная result в синтаксисе call. Наверное, как карту.

Fullstack Guy 13.09.2018 23:08

Я не считаю, что resultSet является частью приложения sql.call (). Мне придется опубликовать это в другом вопросе, поскольку я не умею это делать с помощью самого sql.call (). Он отлично работает с sql.callWithAllRows. Но, к сожалению, мне приходится работать с Groovy v2.19, который развернут на нашем сервере и не может быть обновлен =)

user7071176 14.09.2018 00:10

Другие вопросы по теме