A5:SQL Mk-2

開発のこと、日々のこと

SQLServer でMERGE文が発行できない?

ホーム フォーラム A5:SQL Mk-2掲示板 SQLServer でMERGE文が発行できない?

  • このトピックには2件の返信、2人の参加者があり、最後ににより5年、 5ヶ月前に更新されました。
3件の投稿を表示中 - 1 - 3件目 (全3件中)
  • 投稿者
    投稿
  • #4539 返信
    ry18847
    ゲスト

    いつも利用させてもらっています。
    SQLServer 2017 で、MERGE文を発行しようとしたところ
    末尾行に ; を入れているにもかかわらず、
    「MERGE ステートメントは、セミコロン(;)で終わる必要があります。」というエラーになってしまいます。
    このとき、選択されるクエリが ; の1つ前の文字までとなっています。

    エラーになるSQLをMangaement Studio上で実行すると、MATCHEDもUNMATCHEDも問題なく実行されるようです。
    ご確認をお願いいたします。

    #4540 返信
    ry18847
    ゲスト

    一応、現象の起きたテーブルとクエリを貼っておきます。
    create table [dbo].[M_APHeartBeat] (
    C_ServerID nvarchar(16) not null
    , D_BeatDT datetime not null
    , primary key (C_ServerID)
    );

    MERGE
    INTO M_APHeartBeat AS A
    USING (SELECT ‘PROC01’ AS C_ServerID) AS B
    ON (A.C_ServerID = B.C_ServerID) WHEN MATCHED THEN UPDATE
    SET
    D_BeatDT = GetDate() WHEN NOT MATCHED THEN
    INSERT (C_ServerID, D_BeatDT)
    VALUES (B.C_ServerID, GetDate())
    ;

    #4548 返信
    松原正和
    キーマスター

    ry18847さんこんにちは。

    はい、デフォルトでA5:SQL Mk-2はセミコロンをSQLの区切りとして認識し、セミコロンを含まないSQLをDBに送信します。

    ただ、SQL ServerのMERGE文だけはセミコロンを含めて送信しないとエラーとなってしまいます。この問題は、Version 2.14.2で修正予定です。

    また、現状でも SQL の区切りをセミコロン以外(“/”のみの行、または、”GO”のみの行)に設定し、セミコロン付きのMERGE文を実行することでSQL ServerでMERGE文を実行できます。
    (「SQLの区切り」のデフォルト値はオプションダイアログから変更可能です。)

3件の投稿を表示中 - 1 - 3件目 (全3件中)
返信先: SQLServer でMERGE文が発行できない?で#4548に返信
あなたの情報:




コメントは受け付けていません。