是否可以使用表值参数创建过程作为可选参数。表值可选参数
我尝试下面的代码:
CREATE PROCEDURE SP
@Table testteype = null READONLY
AS
....
但我得到这个错误:
Operand type clash: void type is incompatible with test type
PS:我使用SQL Server用C#.NET
是否可以使用表值参数创建过程作为可选参数。表值可选参数
我尝试下面的代码:
CREATE PROCEDURE SP
@Table testteype = null READONLY
AS
....
但我得到这个错误:
Operand type clash: void type is incompatible with test type
PS:我使用SQL Server用C#.NET
表值参数总是有一个空表的隐含值。所以你可以在没有任何参数的情况下实际调用该过程,它会执行,但表格将是空的。
因此,使用默认值标记表值参数并没有什么意义。删除“= null”,检查表格内容,你应该很好走。
基本上,其默认值“ = null“是没有意义的,并且是错误的原因。
默认情况下,@Table testteype
获取空表的值。因此,你可以删除= NULL:
CREATE PROCEDURE SP
@Table testteype READONLY
AS
....
参考:关于如何使用这个用C#ADO.NET我会建议使用这个职位的样本 - Using SQL Server’s Table Valued Parameters
不知道为什么上面的答案显示默认值= NULL是不正确的,但这对我很有用。
CREATE PROCEDURE SP
(
@Param1 VARCHAR(10),
@Param2 VARCHAR(10)=NULL
)
SELECT......
WHERE @Param1 = SOMETHING
AND (@Param2 = SOMETHING OR @Param2 IS NULL)
不同的情况。这个问题具体是关于* table-valued *参数。它们的处理方式与varchar参数不同。 – FishBasketGordo
您是否试图查看我的答案?任何反馈? –
@ chuckp16是要走的路..'表值参数总是有一个空表的值。所以你可以在没有任何参数的情况下调用这个过程,它会执行,但表格将是空的。“ – Lijo
请标记查克的答案是正确的。 – goodeye