ldf5588 2024-09-13 08:58 采纳率: 50%
浏览 12

sql存储过程传参,类型转换问题

更新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)

  1. 我把上面的代码写成存储过程,为了通用

建立存储过程,名称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
  1. 查询分析器执行
    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可以执行。写入变量就报错
请各位高 手指教一下。谢谢

  • 写回答

1条回答 默认 最新

  • ainiburuqusi 2024-09-13 09:30
    关注

    单引号去掉

    评论

报告相同问题?

问题事件

  • 创建了问题 9月13日