微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

检查SELECT是否在存储过程中返回任何行

如何解决检查SELECT是否在存储过程中返回任何行

IF NOT EXISTS (SELECT ...)
BEGIN
  INSERT ...
END

如果您希望查询可能经常返回行(尤其是很多行),也可以这样做,这可能会提供一个更好的短路机会:

IF EXISTS (SELECT ...)
BEGIN
  PRINT 'Do nothing.';
END
ELSE
BEGIN
  INSERT ...
END

…因为IF EXISTS它将在到达匹配的第一行后立即返回。

我不建议@@ROWCOUNT仅使用它,因为您每次都必须实现(忽略)整个结果集。

解决方法

我正在写一个基本SELECT查询,类似:

SELECT id,pname,pnumber 
FROM tableName 
WHERE pnumber IS NOT NULL

我想然后INSERT通过使用SELECT类似的结果执行:

IF {**the above SELECT query returned 0 rows**}
BEGIN
    INSERT INTO tableName (pname,pnumber) VALUES ('bob','38499483')
END

我的问题是,如何检查**the above SELECT query returned 0 rows**

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。