17

これらの StackOverflow の質問herehere、および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
「,」付近の構文が正しくありません。

このフィドルは記号なしで#実行され、テーブル名が の場合、スキーマは正常に実行さ#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 に答える