Обновление оператора с внутренним объединением при ошибке Oracle - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть запрос, который отлично работает в Sybase, но когда я запускаю его в Oracle, я получаю следующую ошибку

update table1
        set chk = b.chkakhir
    from table1 a
    inner join (select substr('0'||inkdwil,-2) wil,substr(chk,-4) site, wil||site chkakhir,wil||'0' chkdcust from table2) b
        on a.chk = b.site   
    where length(a.chk) = 4;

update table1
        set chk = b.chkakhir
    from table1 a
    inner join (select right('0'||inkdwil,2) wil,right(chk,4) site, wil||site chkakhir,wil||'0' chkdcust from table2) b
        on a.chk = b.site   
    where len(a.chk) = 4;

Запрос работает в Oracle

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

запрос работает в oracle

обновить таблицу1 установить chk = (выбрать chk из таблицы1 внутреннее соединение (выбрать сайт substr ('0' || inkdwil, -2) wil, substr (chk, -4)), substr ('0' || inkdwil, -2) || substr (chk, -4) чкахир, substr ('0' || inkdwil, -2) || '0' chkdcust из таблицы 2) b на a.chk= b.site)
, где длина (a.chk) = 4;

0 голосов
/ 15 февраля 2019

Неправильный синтаксис в отношении Oracle.Должно выглядеть так:

UPDATE table1
   SET chk      =
          (SELECT b.chkakhir               --> instead of FROM, you have to use SELECT here
             FROM table1 a
                  INNER JOIN (SELECT SUBSTR ('0' || inkdwil, -2) wil,
                                     SUBSTR (chk, -4) site,
                                     wil || site chkakhir,
                                     wil || '0' chkdcust
                                FROM table2) b
                     ON a.chk = b.site
            WHERE LENGTH (a.chk) = 4);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...