使用Groovy使用OUT参数调用MS SQL存储过程时遇到问题

时间:2009-07-21 15:03:37

标签: 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 "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'都为null。

我做了一些系统错误的事吗?这是MSSQL的问题吗?这是返回类型为UNIQUEIDENTIFIER的问题吗?我正在使用JTDS驱动程序,文档显示它的JDBC等价类型是VARCHAR。

感谢任何帮助,

安德鲁

1 个答案:

答案 0 :(得分:1)

输出参数的类型应该放在参数列表中,而不是查询字符串,如下所示:

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