1

友人私はマージ構文を使用して、テーブルの値を更新および挿入しています

MERGE INTO iq_dnr b
   USING (SELECT *
            FROM iq_dnr
           WHERE co_series = 'IO' AND CATEGORY = 9 AND dnr_from = 13567362) a
   ON (    a.co_series = b.co_series
       AND a.CATEGORY = b.CATEGORY
       AND a.dnr_from = b.dnr_from)
   WHEN MATCHED THEN
      UPDATE
         SET b.dnr_to = 0001
   WHEN NOT MATCHED THEN
      INSERT (co_series, CATEGORY, dnr_from, dnr_to)
      VALUES ('IO', 9, 13567362, 00001)

上記のクエリで行ったように、1つのテーブルにのみチェックして挿入できるかどうかを尋ねたいと思います。問題は、テーブルを正常に更新できますが、値を挿入できないことです。助けてください

4

1 に答える 1

3

DUAL を使用してみてください。問題が解決する場合があります。

MERGE INTO iq_dnr b
   USING (SELECT 'IO' co_series,
                  9 CATEGORY,
                  13567362 dnr_from
            FROM dual) a
   ON (    a.co_series = b.co_series
       AND a.CATEGORY = b.CATEGORY
       AND a.dnr_from = b.dnr_from)
   WHEN MATCHED THEN
      UPDATE
         SET b.dnr_to = 0001
   WHEN NOT MATCHED THEN
      INSERT (co_series, CATEGORY, dnr_from, dnr_to)
      VALUES ('IO', 9, 13567362, 00001)

上記を使用DUALすると、MERGEステートメントが機能し続ける何かが返されることが保証されます....

于 2012-08-21T04:59:55.903 に答える