T-SQL 复制表变量

Posted

技术标签:

【中文标题】T-SQL 复制表变量【英文标题】:T-SQL copying a table variable 【发布时间】:2010-01-29 11:18:08 【问题描述】:

我正在尝试复制一个表变量:

DECLARE @lt_Sections TABLE
(
  teamId SMALLINT NOT NULL
)

DECLARE @lt_tempSections TABLE
(
  teamId SMALLINT NOT NULL
)

-- populate some values in @lt_Sections
-- take a copy of @lt_Sections

SET @lt_tempSections = @lt_Sections

这给了我一个错误:

Msg 137, Level 15, State 2, Line 14
Must declare the scalar variable "@lt_Sections".

我做错了什么??

谢谢, 标记

【问题讨论】:

【参考方案1】:

设置(或选择)只能应用于标量变量而不是表变量。

你应该使用插入而不是设置值

DECLARE @lt_Sections TABLE 
    ( 
      teamId SMALLINT NOT NULL 
    ) 

DECLARE @lt_tempSections TABLE 
( 
  teamId SMALLINT NOT NULL 
) 

insert @lt_TempSections(teamId)
select teamId from @lt_sections

【讨论】:

【参考方案2】:

您不能像这样复制表变量(将它们更多地视为真实/临时表)。

你需要:

INSERT @lt_tempSections (teamId)
SELECT teamId FROM @lt_Sections

【讨论】:

以上是关于T-SQL 复制表变量的主要内容,如果未能解决你的问题,请参考以下文章

SQL跨数据库复制表数据

SELECT INTO 和 INSERT INTO SELECT 两种表复制语句

SELECT INTO 和 INSERT INTO SELECT 两种表复制语句

SELECT INTO 和 INSERT INTO SELECT 两种表复制语句

SELECT INTO 和 INSERT INTO SELECT 两种表复制语句

T-SQL 之 表变量和临时表