使用SQL Server 2012将多行插入临时表

Insert Multiple Rows Into Temp Table With SQL Server 2012

本问题已经有最佳答案,请猛点这里访问。

这里的StackOverflow问题,这里和这里都说同样的事情,但我不能让它在SSMS或SQLFiddle中运行

1
2
3
4
5
6
7
8
9
10
11
12
CREATE TABLE #Names
  (
    Name1 VARCHAR(100),
    Name2 VARCHAR(100)
  )

INSERT INTO #Names
  (Name1, Name2)
VALUES
  ('Matt', 'Matthew'),
  ('Matt', 'Marshal'),
  ('Matt', 'Mattison')

当我执行这是SSMS时,插入失败,并在VALUES之后的第一行显示以下消息

Msg 102, Level 15, State 1, Line 10
Incorrect syntax near ','.

这个Fiddle在没有#符号的情况下运行,并且当表名为#Names时架构成功执行,但是当我尝试从表中选择*时,我收到以下消息

Invalid object name '#NAMES'.: SELECT * FROM #NAMES

SQL Server 2012是否支持多个插入?

更新:显然在SSMS 2012上访问2005服务器....

1
SELECT @@VERSION --Returns: Microsoft SQL Server 2005


是的,SQL Server 2012支持多个插入 - 该功能是在SQL Server 2008中引入的。

这让我想知道你是否有Management Studio 2012,但你真的连接到SQL Server 2005实例......

你从SELECT @@VERSION得到什么版本的SQL Server引擎?


使用SQLFiddle时,请确保将分隔符设置为GO。 架构构建脚本也在与运行脚本不同的连接中执行,因此在一个中创建的临时表在另一个中不可见。 这个小提示表明您的代码在SQL 2012中有效且有效:

SQL小提琴

MS SQL Server 2012架构设置:

查询1:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
CREATE TABLE #Names
  (
    Name1 VARCHAR(100),
    Name2 VARCHAR(100)
  )

INSERT INTO #Names
  (Name1, Name2)
VALUES
  ('Matt', 'Matthew'),
  ('Matt', 'Marshal'),
  ('Matt', 'Mattison')

SELECT * FROM #NAMES

结果:

1
2
3
4
5
| NAME1 |    NAME2 |
--------------------
|  Matt |  Matthew |
|  Matt |  Marshal |
|  Matt | Mattison |

这里有一个SSMS 2012截图:
enter image description here