Как вернуть пустой результат для столбцов в хранимой процедуре - PullRequest
0 голосов
/ 17 мая 2019

У меня есть хранимая процедура, которая возвращает результаты с некоторыми значениями, но мне нужно возвращать пустые значения для всех столбцов, если заданная дата ввода - выходные.

Я использовал предложение IF с проверкой имени данныхи вернуть пустой набор результатов, но мне нужно ввести каждый столбец в этой хранимой процедуре, чтобы вернуть пустое значение, если это IF условие истинно.

Мой код:

declare @RunDate date = '20190504'

IF DATENAME(WEEKDAY, @RunDate) NOT IN ('Saturday','Sunday')
BEGIN
    Do the actual Logic
END
ELSE
    ' ' as field1, ' ' as field2,..........' ' as fieldN

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

' ' as field1, ' ' as field2,.........., ' ' as fieldN 

утомителен.

Есть ли способ вернуть столбцы с пустой строкой, если указанная дата в выходные?Любая помощь будет высоко ценится

Ответы [ 2 ]

1 голос
/ 17 мая 2019

Я не фанат возврата значений из хранимых процедур.Я предпочитаю пользовательские функции, если это уместно.

В любом случае, сохраните результаты во временной таблице:

select . ..
into #resultset 
. . .;

Затем добавьте условную логику в качестве последнего шага:

select rs.*
from #resultset rs
where DATENAME(WEEKDAY, @RunDate) NOT IN ('Saturday', 'Sunday')
1 голос
/ 17 мая 2019

Вы можете применить трюк, как показано ниже -

DECLARE @RunDate date = '20190504'

IF DATENAME(WEEKDAY, @RunDate) NOT IN ('Saturday','Sunday')
BEGIN
    --Do the actual Logic
    --For Example
    SELECT * FROM your_table
END

ELSE
BEGIN
    --Do the tricks
    SELECT * FROM your_table
    WHERE 1= 2 -- This will never return a row!! But the column names :)
END
...