Заявление о слиянии Oracle не достигло не совпавшей части - PullRequest
0 голосов
/ 04 ноября 2019

Следующий оператор Merge не вставляет (не соответствует) запись.

Запрос, используемый в части Condition условия Merge, иногда не возвращает ни одной строки.

Не вызывает ли это вставки?

MERGE INTO apps.test_table ab USING
(SELECT batch_id
FROM apps.test_table
WHERE session_name='session_name'
AND status        ='NOT STARTED'
)b ON (ab.batch_id=b.batch_id)
WHEN MATCHED THEN
  UPDATE
  SET STATUS         ='RUNNING',
    tag_receive_time = sysdate,
    sess_start_time  = SYSDATE,
    wflw_start_time  = sysdate
  WHERE batch_id     = b.batch_id 
WHEN NOT MATCHED THEN
  INSERT
    (
      ab.batch_id,
      ab.status,
      ab.workflow_name,
      ab.session_name,
      ab.source_name,
      ab.target_table,
      ab.created_by,
      ab.creation_date,
      ab.snapshot_date,
      ab.tag_receive_time,
      ab.sess_start_time,
      ab.wflw_start_time
    )
    VALUES
    (
      apps.batch_id_seq.nextval,
      'RUNNING',
      '$PMWorkflowName',
      '$PMSessionName',
      'AMPS',
      'SPARES_F_ORDER_SHIPMENT_DTL',
      'Informatica',
      SYSDATE,
      SYSDATE,
      SYSDATE,
      SYSDATE,
      SYSDATE
    )
    ; 

Ответы [ 2 ]

0 голосов
/ 04 ноября 2019

Вы уже проверили соответствие для оператора Update в ON (ab.batch_id=b.batch_id), затем необходимо удалить WHERE batch_id = b.batch_id после оператора Update.

Вы можете проверить this как образецсинтаксисы, где ни один из операторов Update не содержит предложение where

0 голосов
/ 04 ноября 2019

Разбивка, которую вы запрашиваете, чтобы увидеть, какие результаты приходят .. Запустите и проверьте результат запроса снизу. Выберите запрос:

SELECT batch_id FROM apps.test_table WHERE session_name='session_name' AND 
status ='NOT STARTED'

И столбец batch_id Результат вышеуказанного запроса содержится в таблице * 1005. * или нет, если нет, то он должен вставить в таблицу apps.test_table, иначе ваш Update оператор будет работать

Удалить WHERE batch_id = b.batch_id из Update, так как он не нужен.

...