kbv*_*hnu 1 sql stored-procedures dynamic-sql sql-server-2008
我的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
Run Code Online (Sandbox Code Playgroud)
这里@AuthID是Datetime,@ AuthID和@Id是int
1)我如何传递参数.2)有一个错误即将来临
Conversion failed when converting
date and/or time from character string.
您按照声明的顺序在第二个参数中传递参数定义,然后是参数:
EXECUTE sp_executesql @query,
N'@AuthID int, @Id int, @reVal int OUTPUT',
@AuthID, @Id, @reVal OUTPUT;
Run Code Online (Sandbox Code Playgroud)
您没有将@authDate作为参数传递的原因是什么?特别是因为语境设置导致转换为字符串时,日期时间类型非常容易出错.
最后,您应该使用TRY/CATCH块而不是@@ ERROR检查.