向动态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) 出现错误 转换时转换失败 字符串中的日期和/或时间。
My sql procedure is
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
Here @AuthID is Datetime, @AuthID and @Id is int
1) How can I pass arguments .
2) There is an error is comingConversion failed when converting
date and/or time from character string.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您在第二个参数中传递参数定义,然后按照声明的顺序传递参数:
您为什么不将 @authDate 也作为参数传递?特别是因为由于区域设置的原因,日期时间类型在转换为字符串时很容易出错。
最后,您应该使用 TRY/CATCH 块而不是 @@ERROR 检查 。
You pass argument definition in the second parameter, followed by the arguments, in the order declared:
Any reason why you don't pass @authDate also as a parameter? specially since datetime types are notoriously error prone when converted to strings, due to locale settings.
Last, you should use TRY/CATCH blocks instead of @@ERROR checks.