2011-02-19 94 views
1

我的SQL程序添加参数动态SQL查询

SET @query='UPDATE '[email protected]+' SET auth_Date='''[email protected]+''' 
    ,[email protected] 
    ,authorized=1 WHERE '[email protected]+'[email protected]; 
    IF(@@ERROR=0) SET @reVal=1 ELSE SET @reVal=-1' 


    EXECUTE sp_executesql @query, N'@reVal int OUTPUT', 
    @reVal,N'@AuthID int',@AuthID,N'@Id int',@Id 

这里@AuthID是DATETIME,@AuthID和@Id为int

1)如何传递参数。 2)有错误就要 Conversion failed when converting date and/or time from character string.

回答

5

您传递的第二个参数参数的定义,其次为参数,在顺序声明:

EXECUTE sp_executesql @query, 
    N'@AuthID int, @Id int, @reVal int OUTPUT', 
    @AuthID, @Id, @reVal OUTPUT; 

任何理由,你为什么不通过@ authDate也作为参数?特别是由于日期时间类型由于语言环境设置而转换为字符串时出现错误。

最后,你应该use TRY/CATCH blocks instead of @@ERROR checks

+0

谢谢它的工作。 :) – kbvishnu 2011-02-19 05:45:16