У меня есть запрос, который дает вывод "ОК".
Я хочу использовать этот результат из запроса для запуска другого запроса.
Если результат в порядке, то не запускайте. Если это ERROR, тогда запустите.
Запросы медленные, и я не хочу выполнять второй запрос, если результат в порядке. Второй запрос проверяет, что не так.
Как я могу это сделать? Я проверил в Интернете, но я не знаю, есть ли такая функция и это имя. Я не хочу использовать вложенные запросы или выражения WITH
Спасибо!
Используйте Try and Catch для обработки ошибок и выполните то, что вы хотите выполнить, как показано ниже:
Если выполняется запрос 1, запрос 2 пропускает в противном случае выполнение запроса 2, если какая-либо ошибка в запросе 1:
Begin Try
--Query 1
End Try
Begin Catch
-- Query 2
End catch
вы можете поместить результат запроса в переменную, а затем проверить его, используя 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
Захват результата устанавливается в переменную. Также убедитесь, что ваше состояние возвращает тот или иной и только один столбец
Я добавил пример запроса
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
Ну, вы можете создать переменную, в которой вы сохраняете результат функции, которая возвращает "OK" или "KO" (как создать функцию с SQL Server).
Затем вы можете использовать оператор IF, в котором вы выполняете разные запросы IF statement SQL Server.
Это может быть идея.
try
иcatch
, добавьте несколько примеров запросов. Обычно второй запрос выполняется в зависимости от набора результатов первого запроса, почему первый запрос не выполняется