bms*_*dev 9 sql t-sql sql-server
我在一个存储过程中使用表值参数.这是我使用的语法:
@districtlist NumericList readonly
Run Code Online (Sandbox Code Playgroud)
(NumericList
是用户定义的表类型).
但是,作为一项要求,我需要将默认值传递给此表值参数.
@districtlist NumericList = 0 readonly
Run Code Online (Sandbox Code Playgroud)
但是上面的代码会引发语法错误.是否可以将默认值传递给表值参数?有人可以帮我吗?
小智 15
您可以默认传递TVP:
EXEC dbo.Test_TVP @my_table = default
Run Code Online (Sandbox Code Playgroud)
这相当于一个空表.
Tom*_*m H 13
您可以选择不传递参数,即使没有为其定义默认值.例如:
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
Run Code Online (Sandbox Code Playgroud)
在这种情况下,表格将为空.如果您想要一些默认行,那么您必须在存储过程中模拟它,可能是通过使用临时表,因为表值参数必须是READONLY
.
归档时间: |
|
查看次数: |
7355 次 |
最近记录: |