0

私の元の更新ステートメントは、Sybase で引き続きうまく機能します (下記参照) が、Oracle 11g に移行中であり、この更新ステートメントを Oracle Update に変換する必要があります。非常に多くのバージョンを試しましたが、エラーが発生し続けました.Oracle Updateステートメントがどのように機能するかを理解していないと思います. 誰でも助けることができますか?

私の元の良い更新ステートメント (Sybase):

UPDATE Valid
    SET A.status = 'X',
        A.reason = 'Missing'
  FROM Valid A, Valid B
  WHERE A.id_number = B.id_number
  AND A.session_id = 69
  AND A.userid = 'BS'
  AND A.status = 'A' 
  AND isnull(B.street1, ' ') = ' '

以下は、何をしても機能しない私の Oracle バージョンです。

MERGE
  INTO um_valid Target
  USING (select * from um_valid) SOURCE
  ON (t1.id_number = t2.id_number)                
  WHEN MATCHED THEN
  UPDATE
   SET status = 'X',
       reason = 'Missing (street 1)'
  WHERE Target.session_id = 69
  AND Target.userid = 'BS'
  AND Target.status = 'A' 
  AND NVL(SOURCE.street1, ' ') = ' ') 

私が得ているエラー: ORA-00933: SQL command not properly ended

4

3 に答える 3

0

これはそれを行うべきです:

UPDATE Valid a
    SET status = 'X',
        reason = 'Missing'
  WHERE A.session_id = 69
  AND A.userid = 'BS'
  AND A.status = 'A' 
  AND exists (select null
              from   valid b
              where  a.id_number = b.id_number
                 AND coalesce(B.street1, ' ') = ' ')
于 2013-03-27T23:31:26.627 に答える
0

最後の WHERE 句は適切ではありません。多分あなたはこれが必要です:

MERGE
   INTO um_valid Target
   USING (
      select distinct id_number 
      from um_valid 
      where street1 is null
   ) SOURCE
   ON (
      Target.id_number = SOURCE.id_number
      AND Target.session_id = 69
      AND Target.userid = 'BS'
      AND Target.status = 'A' 
   )                
   WHEN MATCHED THEN UPDATE SET 
      status = 'X',
      reason = 'Missing (street 1)'
于 2013-03-27T18:33:59.077 に答える
0

通常の更新ステートメントを使用できます。マージは一括操作用です。存在するときに何かを更新する必要がある場合、または存在しないときに挿入する必要がある場合は、merge ステートメントを使用できます。したがって、あなたの例では、次を使用してみてください。

UPDATE Valid
SET status = 'X',
    reason = 'Missing'
WHERE session_id = 69
AND userid = 'BS'
AND status = 'A' 
AND street1 is null

上記のステートメントは、session_id が 69、userid が BS、status が A、street1 が空 (null) であるテーブル「Valid」のすべての行を更新します。

これはあなたが必要としているものだと思います。そうでない場合は、valid で valid に参加する理由を教えてください。更新を調整します。

于 2013-03-27T21:57:43.410 に答える