表值可选参数

Fle*_*ano 22 c# sql-server

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

我尝试了以下代码:

CREATE PROCEDURE SP
@Table testteype = null READONLY
AS 
....
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

Operand type clash: void type is incompatible with test type 
Run Code Online (Sandbox Code Playgroud)

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

Chu*_*ert 53

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

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

  • 没关系,这是使用用户定义的函数而不是存储过程。由于某些原因,UDF 不支持可选参数。:( (2认同)

EL *_*bov 6

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

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

CREATE PROCEDURE SP
@Table testteype  READONLY
AS 
....
Run Code Online (Sandbox Code Playgroud)

参考:有关如何在 C# ADO.NET 中使用它的示例,我建议使用这篇文章 - Using SQL Server's Table Valued Parameters