2013-08-01 98 views
8

這些StackOverflow的問題hereherehere都說着同樣的事情,但我不能讓它在運行SSMS或SQLFiddle插入多行到臨時表中的SQL Server 2012

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是否支持多個插入?

UPDATE 對不起,你好。沒有意識到SQL新手是SSMS 2012將限制爲我的

SELECT @@VERSION 
--Returns: Microsoft SQL Server 2005 - 9.00.5057.00 (X64) 
--Mar 25 2011 13:33:31 
--Copyright (c) 1988-2005 Microsoft Corporation 
--Standard Edition (64-bit) on Windows NT 5.2 (Build 3790: Service Pack 2) 
+2

是的,SQL Server ** 2012 **支持多個插入 - 讓我懷疑你是否有Mgmt Studio 2012,但你真的連接到** 2005 **實例 - 你從SELECT @ @ VERSION' ?? –

+0

就是這樣。我已連接到SQL Server 2005 – KyleMit

回答

6

是,SQL服務器支持多種插件 - 該功能是在SQL Server 2008 介紹

這讓我懷疑你是否有管理工作室2012年,但你真的連接到SQL Server 2005 例如 ...

什麼SQL服務器引擎的版本你從SELECT @@VERSION得到??

6

是任何服務器在使用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

+0

現在我想知道爲什麼它不適用於SSMS。我只是放在小提琴上,所以其他人可以更容易地複製這個問題。 – KyleMit

+0

查看我的更新。我能想到的唯一的事情就是你連接到了2005年的一個實例。 –