更新sql数据库中的时间字段,写成存储过程后,传参时候报错
具体过程如下
1.我的需求 ,想更新表中的时间,每条记录时间都不同。
declare @t datetime
select @t = getdate()
Update tab1
Set fabutime=@t,@t=dateadd(ms,3,@t) where id in(1331691,1331722,133171,1331585)
- 我把上面的代码写成存储过程,为了通用
建立存储过程,名称UpdateTimeFordaili_ext
@SourceId varchar(max), --源ID字符串
DECLARE @nextTime datetime;
SET @nextTime = @startTime;
begin
--UPDATE daili_ext SET fabutime = @nextTime, @nextTime = DATEADD(ms, 3, @nextTime) WHERE id in( 1331691,1331722,133171) --可以执行
UPDATE daili_ext SET fabutime = @nextTime, @nextTime = DATEADD(ms, 3, @nextTime) WHERE id in( @SourceId ) --报错
end
- 查询分析器执行
exec UpdateTimeFordaili_ext '1331691,1331722,133171,1331585'
消息 245,级别 16,状态 1,过程 UpdateTimeFordaili_ext,行 24 [批起始行 6]
在将 varchar 值 '1331691,1331722,133171,1331585,1331711,1331712' 转换成数据类型 int 时失败。
条件语句中的in后面是ID串,直接写入具体ID可以执行。写入变量就报错
请各位高 手指教一下。谢谢