sql >> データベース >  >> RDS >> Sqlserver

SQLServerでINSERTパススルークエリを実行する方法

    SQL Serverでは、OPENQUERYを使用できます リンクサーバーでパススルークエリを実行します。

    OPENQUERY FROMで一般的に参照されます テーブルであるかのようにクエリの句。ただし、INSERTのターゲットテーブルとして参照することもできます。 、UPDATE 、またはDELETE ステートメント。

    この記事では、OPENQUERYの使用例を紹介します。 INSERTを実行するには パススルークエリ。

    リンクサーバー上にCatsというテーブルを作成したとします。 、Petsというデータベース内 。

    このようなもの:

    EXEC ('
        USE  [Pets];
        CREATE TABLE [dbo].[Cats](
            [CatId] [int] IDENTITY(1,1) NOT NULL,
            [CatName] [varchar](60) NULL
        ) ON [PRIMARY];
    ') AT Homer;

    次に、INSERTを使用してデータを挿入します。 パススルークエリ。

    私たちはこのようにそれを行うことができます:

    INSERT OPENQUERY (
        Homer, 
        'SELECT CatName FROM Pets.dbo.Cats'
        )
    VALUES 
        ( 'FluffDupp' ),
        ( 'Scratch' ),
        ( 'Long Tail' );

    この場合、リンクされたサーバーはHomerと呼ばれます。 、そしてPets.dbo.Catsに3つの値を挿入しています テーブル。

    結果を確認する

    これで、SELECTを実行できます 結果を確認するためのパススルークエリ。

    SELECT * FROM OPENQUERY (
        Homer, 
        'SELECT * FROM Pets.dbo.Cats'
        );

    結果:

    +---------+-----------+
    | CatId   | CatName   |
    |---------+-----------|
    | 1       | FluffDupp |
    | 2       | Scratch   |
    | 3       | Long Tail |
    +---------+-----------+

    OPENQUERYに注意してください 引数に変数を受け入れません。


    1. JDBCタイプの方言マッピングなし:2003

    2. リレーショナルデータベースと非リレーショナルデータベース:違いは何ですか?

    3. MySQLに重複レコードを挿入しないようにする方法

    4. OracleSQLDeveloperとPostgreSQL