我正在更改一些存储过程,并且发生了一些奇怪的事情。
IF EXISTS (SELECT * FROM TABLE1
WHERE varID = (CAST(@v_varID AS int) + 1))
UPDATE TABLE2
SET id = (CAST(@v_varID AS int) + 1)
WHERE category = @v_category
ELSE
UPDATE CATEGORY
SET id = (CAST(@v_varID AS int) + 1)
WHERE category = @v_category
这是我的代码。因为@v_varID
是类型varchar
,所以我需要将其转换int
为递增id
。问题是什么时候@v_varID
被转换了,它被抓住了IF EXISTS
。当我不EXISTS
对其进行更新时,它的运行效果就与预期的一样。
ERROR_LOG
显示表中的另一个不可转换对象@v_varID
无法转换为int。我一直在传递正则'800'
表达式或某些varchar-ed整数,因此它应该可以工作,但是不知何故不传递IF EXISTS
(如果删除,它会更新IF EXISTS
)。我只是使用了另一种方法使其工作,但我很好奇为什么。
谢谢!
你们update
俩都有病category = @v_category
。
您的if exists ()
子查询没有。
我猜这varid
是一个字符串。与整数的比较将转换varid
为整数。
此外,我猜想转换之前正在检查类别。换句话说,一行中的v_varid
值不正确(即不能转换为整数),并且该行中的类别不匹配。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句