【发布时间】:2019-06-25 12:20:21
【问题描述】:
我已经定义了一个用户定义的表格类型 - 称之为 TrackRefsTable
声明了两个变量 将@FOO1 声明为 TrackRefsTable 将@FOO2 声明为 TrackRefsTable
有没有办法将一个设置为另一个?显而易见的
SET @FOO2 = @FOO1
不起作用,因为此分配方法似乎仅适用于标量变量,因此您会收到错误 必须声明标量变量“@FOO1”
我希望能够避免必须执行 INSERT 语句来将数据从一个移动到另一个,因为这可能是一项昂贵的操作。
DECLARE @FOO1 AS TrackRefsTable
DECLARE @FOO2 AS TrackRefsTable
-- INSERT INTO @FOO1 here
SET @FOO2 = @FOO1
【问题讨论】:
-
表变量实际上并不包含对表的引用,它们是表。你也不能动态地给它们取别名或重命名它们,所以无论你想用这个实现什么,都必须以其他方式完成(例如,使用一个或另一个的标志)。
-
是的。我认为你是对的,杰伦。我正在考虑填充这些不同的实例,然后选择“正确的”一个来加入其他东西以进行实际检索。我的问题是,如果使用 2 个或更多这些变量,我将不得不编写 2 个或更多有效相同的 JOIN,从而使我的 SP 膨胀。但是我刚刚意识到,我可以很容易地创建一个 second SP,其中一个作为参数,所以这只是一个用一个或另一个调用 SP 的问题,让我的代码变得漂亮和精简.
-
@JeroenMostert 请添加您的评论作为答案。 “你试图做的事情是不可能的”仍然是正确的答案,而且它帮助我想到了正确的解决方案来让我克服这个困难,所以......你值得称赞,先生!
-
我认为发布实际解决方案对于将来尝试类似事情的人会更有帮助,而您拥有那个。我不在乎信用,所以请随意写一个不错的答案并自我接受。
-
干杯 - 当我充实它时会做
标签: tsql user-defined-types table-variable