оракул сливается с - PullRequest
       5

оракул сливается с

0 голосов
/ 24 августа 2018

Я пытаюсь выполнить обновление с помощью следующего кода:

MERGE
INTO    target trg
USING   (
    WITH email AS (
      SELECT trim(t2.crn_0) as cf,
             coalesce(trim(t1.WEB_1),trim(t1.WEB_0)) as im
      FROM   tab1 t1 
      INNER JOIN tab2 t2 on t2.bprnum_0=t1.bpanum_0
      INNER JOIN target t3 on t3.ycodfis_0=t2.crn_0
      WHERE t1.bpaadd_0='000' 
      AND regexp_like(t3.ycodfis_0,'[^A-Za-z]') 
      AND t3.ycodfis_0 != ' '
      AND coalesce(trim(t1.WEB_1),trim(t1.WEB_0)) != ' '
      )
    SELECT email.cf, email.im FROM email
    ) ON (email.cf = trg.ycodfis_0)
WHEN MATCHED THEN UPDATE SET trg.email_0 = email.im     

Я получаю следующую ошибку:

"EMAIL". "CF": недействительноидентификатор

Я попытался выполнить единственный запрос оператора WITH, он выполняется правильно.

Я несколько раз просматривал синтаксис слияния, но не могу найти то, чтомоя ошибка.

Кто-нибудь может мне помочь, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

Всегда используйте псевдонимы - например, src:

MERGE
INTO    target trg
USING   (
             ... subquery omitted for clarity ...
        ) src
ON      ( src.cf = trg.ycodfis_0 )
WHEN MATCHED THEN UPDATE SET trg.email_0 = src.im
0 голосов
/ 24 августа 2018

Ваш email используется только внутри блока using. Удалить его из внешних утверждений:

ON (cf = trg.ycodfis_0)
WHEN MATCHED THEN UPDATE SET trg.email_0 = im     
...