存储过程包含两个查询,如果一个返回一个集合不运行另一个

时间:2011-11-28 22:20:57

标签: sql-server sql-server-2005

创建包含两个查询的存储过程的语法是什么,如果第一个查询返回一组记录,则不运行第二个查询。我猜测必须对计数进行一些测试,这样如果第一个查询返回一个集合,第二个将不会运行。

我想这样做:

  1. 运行查询
  2. 第一次查询的测试结果集
  3. 如果count等于零,则运行第二个查询
  4. 我总是喜欢添加是否有“正确”的方法来实现这一点,或者事实上“应该”构建这种类型的存储过程还是通常不赞成?

    由于

1 个答案:

答案 0 :(得分:3)

您可以使用@@ROWCOUNT检查并查看受上一个查询影响的行数。

DoYourQuery()
IF @@ROWCOUNT = 0
BEGIN
   YourAlternateQuery()
END

至于你的问题是你应该做的事情,我认为这将是个案。它类似于将控制流逻辑放在任何其他程序中,有时IF语句是实现目标的正确工具,但不应在任何情况下使用它们。