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

时间:2013-08-01 20:36:48

标签: sql sql-server-2012 bulkinsert

这些StackOverflow问题hereherehere都说同样的事情,但我不能让它在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之后的第一行显示以下消息

  

Msg 102,Level 15,State 1,Line 10
  ','。

附近的语法不正确

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

  

无效的对象名称'#NAMES':SELECT * FROM #NAMES

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


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

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

2 个答案:

答案 0 :(得分:9)

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

SQL Fiddle

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

<强> Results

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

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

答案 1 :(得分:8)

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

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

您从SELECT @@VERSION获得了哪个版本的SQL Server 引擎