我在我们的存储过程中使用了一个表值参数。以下是我使用的语法:
@districtlist NumericList readonly
(NumericList
是用户定义的表类型)。
但是,作为要求,我需要向这个表值参数传递默认值。
@districtlist NumericList = 0 readonly
但是上面的代码会抛出语法错误。是否有可能为表值参数传递默认值?有人可以帮我吗?
我在我们的存储过程中使用了一个表值参数。以下是我使用的语法:
@districtlist NumericList readonly
(NumericList
是用户定义的表类型)。
但是,作为要求,我需要向这个表值参数传递默认值。
@districtlist NumericList = 0 readonly
但是上面的代码会抛出语法错误。是否有可能为表值参数传递默认值?有人可以帮我吗?
你可以将 TVP 作为默认值传递:
EXEC dbo.Test_TVP @my_table = default
这相当于一个空表。
default
SQL Server 15.0.2101.7дәљдғ§з”џдёҺдҢүз”ЁNULL
з›ёеђЊзљ„й”™иҮҮдүҰжЃҮпәљж“ҚдҢњж•°з±»еһ‹е†ІзҒЃпәљNULLдёҚе…әе®№...
- pasx即使没有为这个参数定义默认值,您也可以选择不传递它。例如:
CREATE TYPE TestTable AS TABLE (my_id INT)
GO
CREATE PROCEDURE dbo.Test_TVP
@my_table TestTable READONLY,
@my_int INT
AS
BEGIN
SELECT * FROM @my_table
END
GO
EXEC dbo.Test_TVP @my_int = 2
GO
DROP PROCEDURE dbo.Test_TVP
DROP TYPE TestTable
在这种情况下,表格将会是空的。如果你想要一些默认行数,那么你需要在存储过程中模拟出来,可能需要使用临时表,因为表值参数必须是READONLY
。
@districtlist NumericList = NULL
作为参数(将NULL
作为“默认”值传递)。无论哪种方法,都可以实现相同的结果。 - marc_s