Как Вы указываете 'ЗНАЧЕНИЕ ПО УМОЛЧАНИЮ' как значение параметра SQL в ADO.NET?

Мне были нацелены на параметризованный SQL-запрос для SQL2005, который динамично создается в коде, таким образом, я использовал ADO.NET SqlParameter класс для добавления sql параметров к SqlCommand.

В вышеупомянутом SQL я выбираю из Табличной функции с, имеет значения по умолчанию. Я хочу, чтобы мой динамический sql иногда указал значение для этих параметров по умолчанию, и другие времена, я хочу указать что SQL DEFAULT - как определено в Табличной функции - должен использоваться.

Для содержания кода в чистоте, я не хотел динамично добавлять SQL DEFAULT ключевое слово и параметризовало его, когда не по умолчанию должно использоваться, я просто хотел установить DEFAULT как значение моего SQLParameter.

Могу я? Что такое лучшая практика в таком экземпляре?

14
задан Llyle 3 June 2010 в 23:28
поделиться

2 ответа

Параметры SQL-запроса занимают место литеральных значений только.

В качестве значения параметра нельзя передать ключевое слово SQL, так же как нельзя передать идентификатор таблицы, идентификатор столбца, список значений (например, для предиката IN) или выражение. Значение параметра всегда интерпретируется как литеральное значение, как если бы вы включили в запрос литерал строки в кавычках или числовой литерал.

Извините, но вы должны включить ключевое слово SQL как часть SQL-запроса до подготовки этого запроса.

15
ответ дан 1 December 2019 в 12:38
поделиться

AFAIK, единственный способ указать SQL Server использовать значение по умолчанию - использовать ключевое слово DEFAULT или исключить его из списка параметров. Это означает, что ключевое слово DEFAULT должно использоваться в параметризованном операторе SQL. Итак, что-то вроде:

Select ...
From dbo.udf_Foo( DEFAULT, @Param2, @Param3, DEFAULT, .... )

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

6
ответ дан 1 December 2019 в 12:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: