Я хочу написать хранимую процедуру, которая работает примерно так:
SELECT * from T where T.A = @a and T.B = @b
, если она возвращает строки, возвращает эти строки, если нет, возвращает
SELECT * from T where T.A = @a and T.B IS NULL
Редактировать:
Чувствуется, что должен быть способ создать процедуру, которая запускает первый запрос один раз и запускает второй запрос только при необходимости .
Завершить редактирование.
Лучшее, что я смог сделать, - это следующее: теоретически он выполняет первый запрос дважды, если, возможно, он не кэширован:
IF EXISTS (SELECT * from T where T.A = @a and T.B = @b) THEN
SELECT * from T where T.A = @a and T.B = @b
ELSE
SELECT * from T where T.A = @a and T.B IS NULL
Для чего это стоит, это в Microsoft SQL Server 2008