Проблема вызова хранимой процедуры MS SQL с параметром OUT с использованием Groovy - PullRequest
1 голос
/ 21 июля 2009

При вызове этой хранимой процедуры MS-SQL:

CREATE PROCEDURE [dbo].[AddUser] 

@networkID varchar(512), 
@id uniqueidentifier OUTPUT 
.... 

С этим Groovy кодом:

networkAliasID = 'aschoewe_test' 
sql.call("{call AddUser(?, ${Sql.VARCHAR}) }", [networkAliasID]) { s -> 
   println "userID: ${s}" 
}

Я получаю эту ошибку:

java.sql.SQLException: Incorrect syntax near '.'. 

Это потому, что ему не нравится «Sql». часть кода (хотя все примеры, которые я видел, делают это так). Если я изменю код на:

networkAliasID = 'aschoewe_test' 
String userID = null 
sql.call("{call AddUser(?, ?) }", [networkAliasID, userID]) { s -> 
   println "userID: ${s}" 
   println "userID: ${userID}" 
} 

Код выполняется, но я не могу получить новый идентификатор пользователя. И s, и userID равны нулю, когда код завершил выполнение.

Я делаю что-то систематически неправильно? Это проблема с MSSQL? Это проблема с возвращаемым типом UNIQUEIDENTIFIER? Я использую драйверы JTDS, и документация показывает, что это эквивалентный тип JDBC VARCHAR.

Любая помощь приветствуется,

Andrew

1 Ответ

1 голос
/ 22 июля 2009

Тип выходного параметра должен указываться в списке параметров, а не в строке запроса, например:

networkAliasID = 'aschoewe_test'
sql.call("{call AddUser(?, ?) }", [networkAliasID, Sql.VARCHAR]) { s -> 
    println "userID: ${s}"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...