17

这些 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

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

Fiddle运行时不带#符号,当表名为 时,模式执行成功#Names,但是当我尝试从表中选择 * 时收到以下消息

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

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


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

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

2 回答 2

14

使用 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 的屏幕截图: 在此处输入图像描述

于 2013-08-01T20:42:00.047 回答
10

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

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

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

于 2013-08-01T20:46:57.570 回答