Значение параметра таблицы 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)