表值可选参数

是否可以使用表值参数作为可选参数创建过程。

我尝试了以下代码:

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

但我得到这个错误:

 Operand type clash: void type is incompatible with test type 

ps:我使用C#.Net的sql server

表值参数始终具有空表的隐式值。 因此,您实际上可以在没有任何参数的情况下调用该过程,并且它将执行,但该表将为空。

因此,使用默认值标记表值参数并没有多大意义。 删除“= null”,检查表格内容,你应该好好去。

基本上,具有默认值“= null”是没有意义的,并且是错误的原因。

默认情况下, @Table testteype获取空表的值。 因此,您可以删除= null:

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

参考:有关如何使用C#ADO.NET的示例,我建议使用此post – 使用SQL Server的表值参数

不确定为什么上面的答案声明默认值= NULL是不正确的,但这对我有用。

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