これらのStackOverflowの質問 here 、 here 、および here はすべて同じことを言っていますが、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は複数の挿入をサポートしていますか?
Update:どうやらSSMS 2012上の2005サーバーにアクセスしています...
SELECT @@VERSION --Returns: Microsoft SQL Server 2005
はい、SQL Server 2012は複数の挿入をサポートします-この機能はSQL Serverで導入されました2008。
Management Studio 2012があるのではないかと思いますが、実際にはSQL Serverに接続しています2005インスタンス...
どのバージョンのSQL Server engineから取得しますかSELECT @@VERSION
??
SQLFiddleを使用する場合、セパレーターがGOに設定されていることを確認してください。また、スキーマ構築スクリプトは実行スクリプトとは異なる接続で実行されるため、一方で作成された一時テーブルは他方では表示されません。このフィドルは、コードが有効であり、SQL 2012で機能していることを示しています。
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のスクリーンショットは次のとおりです。