Параметр процедуры SQL Server Пустой регистр - PullRequest
0 голосов
/ 21 июля 2011

У меня есть один выходной параметр int для sproc в MSSQL 2008. Значение может быть нулевым или может быть заполнено.

Я пытаюсь написать умный единственный оператор выбора, который будет возвращать одну строку: если значение параметра заполнено, вернуть эту строку, если значение параметра равно нулю, вернуть верхнюю 1 строку, где issoftdeleted = 0

Спасибо за все идеи.

Ответы [ 2 ]

1 голос
/ 21 июля 2011
SELECT
   TOP (CASE WHEN @param IS NULL THEN 2000000000 ELSE 1 END)
  ...
FROM
   Mytable
WHERE
   SomeID = @param
   OR 
   (@param IS NULL AND issoftdeleted = 0)
ORDER BY
   something --to make the top meaningful

Если вы ожидаете одну строку при установленном @param, тогда используйте TOP (1)

Лично я бы хотел использовать оператор IF и 2 отдельных оператора SELECT ...

0 голосов
/ 21 июля 2011
SELECT TOP 1 * FROM SomeTable t
WHERE (@someParam IS NULL AND t.issoftdeleted = 0) OR (t.someColumn = @someParam)
...