【问题标题】:Adding parameters to a dynamic sql query将参数添加到动态 sql 查询
【发布时间】:2011-02-19 04:49:30
【问题描述】:

我的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.

【问题讨论】:

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


    【解决方案1】:

    您在第二个参数中传递参数定义,然后按声明的顺序传递参数:

    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

    【讨论】:

      猜你喜欢
      • 2022-12-04
      • 2019-12-30
      • 1970-01-01
      • 2022-09-26
      • 1970-01-01
      • 1970-01-01
      • 2016-01-04
      • 2019-05-30
      • 1970-01-01
      相关资源
      最近更新 更多