将参数添加到动态SQL查询中

时间:2011-02-19 04:49:31

标签: sql sql-server-2008 stored-procedures dynamic-sql

我的sql程序是

 SET @query='UPDATE '+@tbl+' SET  auth_Date='''+@authDate+'''
    ,authorized_By_ID=@AuthID
    ,authorized=1 WHERE '+@col+'=@Id;
    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.

1 个答案:

答案 0 :(得分: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