Выполнить запрос в соответствии с результатом другого

0

У меня есть запрос, который дает вывод "ОК".

Я хочу использовать этот результат из запроса для запуска другого запроса.

Если результат в порядке, то не запускайте. Если это ERROR, тогда запустите.

Запросы медленные, и я не хочу выполнять второй запрос, если результат в порядке. Второй запрос проверяет, что не так.

Как я могу это сделать? Я проверил в Интернете, но я не знаю, есть ли такая функция и это имя. Я не хочу использовать вложенные запросы или выражения WITH

Спасибо!

  • 0
    Я попал в ту же ситуацию, изучая ее ... но пока вы не сможете использовать if-else, напишите свои попытки.
  • 0
    Вы исследовали блоки try и catch , добавьте несколько примеров запросов. Обычно второй запрос выполняется в зависимости от набора результатов первого запроса, почему первый запрос не выполняется
Показать ещё 4 комментария
Теги:
database
tsql

4 ответа

1

Используйте Try and Catch для обработки ошибок и выполните то, что вы хотите выполнить, как показано ниже:

Если выполняется запрос 1, запрос 2 пропускает в противном случае выполнение запроса 2, если какая-либо ошибка в запросе 1:

Begin Try 
 --Query 1
End Try 
Begin Catch    
  -- Query 2
End catch 
1

вы можете поместить результат запроса в переменную, а затем проверить его, используя IF... ELSE

declare @test varchar(10) = (select 'ok' as test);

if @test != 'ok'
    begin
       --query if not 'ok'
    end
else
    begin
        --query if 'ok', or you can remove 'else' at all if not required
    end

DEMO

0

Захват результата устанавливается в переменную. Также убедитесь, что ваше состояние возвращает тот или иной и только один столбец

Я добавил пример запроса

declare @output VARCHAR(10)
SET @OUTPUT =
--sample query 
(select case when  SUM(s.SellingValue) = SUM(h.SellingValue) then 'OK' ELSE 'ERROR' END OUTPUT
from Missing_Sales s inner join Missing_Sales_TH h on s.Branch_no = h.Branch_no and s.date = h.Date)
BEGIN
IF @output = 'OK'
--sample query
SELECT * FROM Missing_Sales
ELSE 
--sample query
SELECT * FROM Missing_Sales_TH
END 
0

Ну, вы можете создать переменную, в которой вы сохраняете результат функции, которая возвращает "OK" или "KO" (как создать функцию с SQL Server).

Затем вы можете использовать оператор IF, в котором вы выполняете разные запросы IF statement SQL Server.

Это может быть идея.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню