Sql server 使用Groovy调用带有OUT参数的MS SQL存储过程时出现问题
调用此MS-SQL存储过程时:Sql server 使用Groovy调用带有OUT参数的MS SQL存储过程时出现问题,sql-server,groovy,Sql Server,Groovy,调用此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 "us
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}"
}
代码已执行,但我无法获取新的用户ID。当代码完成执行时,“s”和“userID”都为空
我是不是做了一些系统性的错误?这是MSSQL的问题吗?这是返回类型为UNIQUEIDENTIFIER的问题吗?我使用的是JTDS驱动程序,文档显示它的JDBC equivalent类型是VARCHAR
感谢您的帮助
Andrew输出参数的类型应位于参数列表中,而不是查询字符串中,如下所示:
networkAliasID = 'aschoewe_test'
sql.call("{call AddUser(?, ?) }", [networkAliasID, Sql.VARCHAR]) { s ->
println "userID: ${s}"
}
输出参数的类型应位于参数列表中,而不是查询字符串中,如下所示:
networkAliasID = 'aschoewe_test'
sql.call("{call AddUser(?, ?) }", [networkAliasID, Sql.VARCHAR]) { s ->
println "userID: ${s}"
}