При вызове этой хранимой процедуры 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