首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SQL IF EXISTS行为异常

SQL IF EXISTS行为异常
EN

Stack Overflow用户
提问于 2018-06-08 07:50:51
回答 1查看 69关注 0票数 1

我正在更改一些存储过程,然后发生了一些奇怪的事情。

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不能转换为整数。我只传递了'800'或一些可变字符的整数,所以它应该可以工作,但不知何故它没有传递IF EXISTS (如果我去掉了IF EXISTS,它就会更新)。我只是用了另一种方法让它工作,但我很好奇为什么。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-08 08:08:26

您的update%s都具有条件category = @v_category

您的if exists ()子查询不需要。

我猜varid是一个字符串。与整数的比较会将varid转换为整数。

此外,我猜测在转换之前正在检查类别。换句话说,有一行的v_varid值不正确(即无法转换为整数),并且该行的类别不匹配。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50751593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档