хранимая процедура, содержащая два запроса, если один возвращает набор, другой не запускается - PullRequest
0 голосов
/ 29 ноября 2011

Каков синтаксис для создания хранимой процедуры, которая содержит два запроса, если первый запрос возвращает набор записей, то второй не запускается.Я предполагаю, что будет необходим некоторый тест для подсчета, чтобы, если первый запрос вернул набор, второй не запустился.

Я хотел бы сделать это:

  1. Выполнить запрос
  2. Набор результатов теста из первого запроса
  3. Если число равно нулю, выполнить второй запрос

Мне всегда нравится добавлять, есть ли 'правильный «способ сделать это или на самом деле» должен ли этот тип хранимой процедуры быть сконструирован или он вообще не одобряется?

Спасибо

1 Ответ

3 голосов
/ 29 ноября 2011

Вы можете использовать @@ ROWCOUNT , чтобы проверить и увидеть количество строк, затронутых предыдущим запросом.

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

Что касается вашего вопроса о том, что это то, что вы должны делать, я думаю, что это будет в каждом конкретном случае. Это похоже на размещение логики потока управления внутри любой другой программы, иногда операторы IF являются правильным инструментом для достижения ваших целей, но их не следует использовать в каждой ситуации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...