Sql server 使用Groovy调用带有OUT参数的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

调用此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}" 
} 
代码已执行,但我无法获取新的用户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}"
}