22,288
社区成员
发帖
与我相关
我的任务
分享
需求:更新某表的某时间字段,要求更新后的每条记录时间值都不相同
如下:
declare @t datetime
select @t = getdate()
Update tb Set tim=@t,@t=dateadd(ms,3,@t) where userid='aaa'
想改成存储过程,使用方便:
ALTER PROCEDURE [dbo].[sp_PLshuaxin]
@tblName nvarchar(50), --表名
@sxName nvarchar(30), --刷新的字段名称
@tj varchar(max) --条件
AS
declare @t datetime --更新时间
declare @strsql varchar(1000) --执行的sql语句
BEGIN
SET NOCOUNT ON;
select @t = getdate()
set @strsql='update '+@tblName+' set '+@sxName+'='''+convert(varchar(100), @t)+''',@t=dateadd(ms,3,@t) where '+@tj --报错,必须声明标量变量 "@t"
exec (@strsql )
END
现在的问题: 执行存储过程时报错,必须声明标量变量 "@t" (已经声明了)
请高手赐教一下如何正确改写存储过程,谢谢
exec 不在当前语境中执行,不能获取当前存储过程声明的变量