Is it possible to create a procedure with a table value parameter as an optional parameter.
I tried the following code:
CREATE PROCEDURE SP
@Table te
Not sure why the answer above states making default value = NULL is incorrect but this works for me.
CREATE PROCEDURE SP
(
@Param1 VARCHAR(10),
@Param2 VARCHAR(10)=NULL
)
SELECT......
WHERE @Param1 = SOMETHING
AND (@Param2 = SOMETHING OR @Param2 IS NULL)
Table-Valued parameters always have an implicit value of an empty table. So you can actually call that procedure without any parameters and it would execute but the table would be empty.
So it doesn't really make sense to label a table-value parameter with a default value. Remove the "=null", check the table contents, and you should be good to go.
Basically, having default value "= null" makes no sense and is the reason of the error.
By default, @Table testteype
gets value of an empty table. Thus, you may remove = null:
CREATE PROCEDURE SP
@Table testteype READONLY
AS
....
Reference: for a sample on how to use this with C# ADO.NET i would recommend to use this post - Using SQL Server’s Table Valued Parameters