表值参数可以是临时的吗
Posted
技术标签:
【中文标题】表值参数可以是临时的吗【英文标题】:Can Table-Valued Parameters be temporary 【发布时间】:2019-03-13 17:15:19 【问题描述】:我正在尝试创建一个存储过程,它的参数可以采用未知数量的值。为此,我使用了一个可以查询的表值参数。我想知道是否可以让表值参数是临时的,并在执行存储过程后将其删除?我尝试阅读它,但从我发现的内容中没有明确说明答案是“是”还是“否”。
如果我得到任何帮助,我将不胜感激。谢谢!
我使用的是 SQL Server 2016。
我声明如下:
CREATE TYPE [schema].[tvp] AS Table ( value INT NULL)
GO
CREATE PROCEDURE [schema].[procedure] (
@Param [tvp] READONLY
) AS BEGIN ..
【问题讨论】:
我认为这回答了你的问题,***.com/questions/5653520/… 您使用的是什么版本的 SQL Server?如果您使用的是 2016 或更新版本,则可以通过 NVARCHAR 参数将数据作为 JSON 传递。我的团队已经停止使用大部分 TVP 来支持这一点。 如何声明表值参数?您是否将其定义为用户定义的表类型? @MadBert 感谢您的帮助,我会调查一下。 @squillman 我使用的是 2016 年。 【参考方案1】:表值参数是自动临时的,在存储过程执行后将被删除到 SQL Server 上。在 .net 方面,该参数也将在正常的“垃圾处理”中删除。
【讨论】:
【参考方案2】:参数是参数——它们只是临时保存值。调用存储过程时适用于 int 或 varchar 参数的内容也适用于 TVP。
【讨论】:
以上是关于表值参数可以是临时的吗的主要内容,如果未能解决你的问题,请参考以下文章