У меня возникла ситуация, когда я вызываю хранимую процедуру и передаю некоторые переменные. В некоторых случаях я буду передавать значение null, и я хочу, чтобы он возвращал все. Возьмите следующее (возраст - целая колонка):T-SQL Где int = @ var/@ var = null?
[Table]
[Name] | [Age]
Mike | 22
Fred | 18
Bob | 22
SELECT * FROM [table] WHERE [Age][email protected]
Теперь, если я перейду в 22, я получу Майка и Боба. Точно так же, пройдя в 18, я получу Фред. Однако, что, если я хочу, чтобы все 3 строки, когда я проходил в null/не устанавливали @AgeVar? Это моя проблема в очень простом масштабе.
Редактировать: Sproc довольно сложный, и я действительно не хочу удвоить все разделы, имея необходимость, но их дважды, как в одном из ответов ниже. Есть ли другие методы?
Читать [Catch-all queries] (http://sqlinthewild.co.za/index.php/2009/03/19/catch-all-queries/) –
Если у вас нет времени, чтобы нажать на Joe's ссылка на его замечательную статью, он демонстрирует, что использование динамического SQL может очень хорошо превзойти этот подход. – DOK
@ DOK: Чтобы быть ясным, я не автор статьи. Эта статья была написана Гейлом Шоу, который намного умнее, чем я рассматриваю SQL Server. –