2011-11-28 51 views
0

如果第一个查询返回一组记录,然后不运行第二个查询,那么创建包含两个查询的存储过程的语法如何?我猜测会有计数的一些测试,以便如果第一个查询返回一个集合,第二个不会运行。包含两个查询的存储过程(如果返回一个集合不运行另一个)

我想做到这一点:

  1. 运行查询
  2. 测试结果从第一次查询
  3. 设置如果算上等于零,然后运行第二个查询

我总是喜欢加有没有一种“正确”的方式来做到这一点,或者实际上“应该”构建这种类型的存储过程,还是通常会皱眉?

感谢

回答

3

您可以使用@@ROWCOUNT检查,看看影响与先前查询的行数。

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

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

+0

这是我正在运行两个查询和测试通过c#代码哪些记录集使用的情况之一,我想知道如果我可以通过将查询和代码组合到一个存储过程中减轻负载,这似乎回答我的问题很好 - 感谢亚当。 – flavour404

+0

@ flavour404减少对SQL的调用很不错,因为它减少了必须进行的网络往返次数。你必须权衡SQL对你所做的额外处理,但在这种情况下,额外的处理似乎是非常小的。 –

相关问题