Значение параметра таблицы Value
Возможно ли создать процедуру с параметром значения таблицы в качестве необязательного параметра.
Я попробовал следующий код:
CREATE PROCEDURE SP
@Table testteype = null READONLY
AS
....
Но я получаю эту ошибку:
Operand type clash: void type is incompatible with test type
ps: Я использую sql-сервер с С#.Net
Ответы
Ответ 1
Таблично-оцененные параметры всегда имеют неявное значение пустой таблицы. Таким образом, вы можете называть эту процедуру без каких-либо параметров, и она будет выполняться, но таблица будет пустой.
Таким образом, на самом деле не имеет смысла обозначать параметр table-value значением по умолчанию. Удалите "= null", проверьте содержимое таблицы, и вам должно быть хорошо идти.
Ответ 2
В принципе, значение по умолчанию "= null" не имеет смысла и является причиной ошибки.
По умолчанию @Table testteype
получает значение пустой таблицы. Таким образом, вы можете удалить = null:
CREATE PROCEDURE SP
@Table testteype READONLY
AS
....
Ссылка: для примера о том, как использовать это с С# ADO.NET, я бы рекомендовал использовать этот пост - Использование SQL Таблица Таблица Значения параметров
Ответ 3
Не уверен, почему ответ выше, указывая значение по умолчанию = NULL неверен, но это работает для меня.
CREATE PROCEDURE SP
(
@Param1 VARCHAR(10),
@Param2 VARCHAR(10)=NULL
)
SELECT......
WHERE @Param1 = SOMETHING
AND (@Param2 = SOMETHING OR @Param2 IS NULL)