使用 SQL Server 2012 将多行插入临时表[重复]

问题描述 投票:0回答:2

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

CREATE TABLE #Names
  ( 
    Name1 VARCHAR(100),
    Name2 VARCHAR(100)
  ) 

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

当我在 SSMS 中执行此操作时,插入失败,并在

VALUES

之后的第一行显示以下消息

消息 102,第 15 级,状态 1,第 10 行
“,”附近的语法不正确。

这个 Fiddle 在没有

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

无效的对象名称“#NAMES”。:SELECT * FROM #NAMES

SQL Server 2012支持多次插入吗?


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

SELECT @@VERSION --Returns: Microsoft SQL Server 2005
sql sql-server-2012 bulkinsert
2个回答
18
投票

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

SQL 小提琴

MS SQL Server 2012 架构设置:

查询1

CREATE TABLE #Names
  ( 
    Name1 VARCHAR(100),
    Name2 VARCHAR(100)
  ) 

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

SELECT * FROM #NAMES

结果:

| NAME1 |    NAME2 |
--------------------
|  Matt |  Matthew |
|  Matt |  Marshal |
|  Matt | Mattison |

这里是 SSMS 2012 屏幕截图: enter image description here


10
投票

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

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

您从 SELECT @@VERSION 获得什么版本的 SQL Server

engine
??

© www.soinside.com 2019 - 2024. All rights reserved.