Parâmetro opcional do valor da tabela

É possível criar um procedimento com um parâmetro de valor de tabela como um parâmetro opcional.

Eu tentei o seguinte código:

CREATE PROCEDURE SP @Table testteype = null READONLY AS .... 

Mas eu recebo este erro:

 Operand type clash: void type is incompatible with test type 

ps: eu uso servidor sql com c # .net

Os parâmetros com valor de tabela sempre têm um valor implícito de uma tabela vazia. Então você pode realmente chamar esse procedimento sem nenhum parâmetro e ele seria executado, mas a tabela estaria vazia.

Portanto, não faz sentido rotular um parâmetro de valor de tabela com um valor padrão. Remova o “= null”, verifique o conteúdo da tabela e você deve estar pronto.

Basicamente, ter valor padrão “= null” não faz sentido e é o motivo do erro.

Por padrão, @Table testteype obtém o valor de uma tabela vazia. Assim, você pode remover = null:

 CREATE PROCEDURE SP @Table testteype READONLY AS .... 

Referência: para um exemplo sobre como usar isso com o C # ADO.NET eu recomendaria para usar este post – Usando os parâmetros avaliados de tabela do SQL Server

Não sei por que a resposta acima afirma que o valor padrão = NULL está incorreto, mas isso funciona para mim.

 CREATE PROCEDURE SP ( @Param1 VARCHAR(10), @Param2 VARCHAR(10)=NULL ) SELECT...... WHERE @Param1 = SOMETHING AND (@Param2 = SOMETHING OR @Param2 IS NULL)