Подстановка Oracle с ошибкой 00917. 00000 - «пропущенная запятая» - PullRequest
0 голосов
/ 30 апреля 2019

В Oracle, когда я использую SUBSTR() в слиянии, появляется ошибка «пропущенная запятая».Я не могу узнать, где мне нужна запятая, или я использую неправильное предложение?

WHEN NOT MATCHED THEN
        INSERT INTO A      
        (
        A.EMP_ID,
        A.HOLI_DATE,
        A.HOLI_HOURS,
        A.HOLI_REASON,
        A.START_TIME,
        A.END_TIME,
        A.AGENT_EMP_ID,
        A.VERSION,
        A.CREATETIME,
        --,TG.CREATOR
        --,TG.MODIFIER
        A.LASTUPDATE)
VALUES
 substr(B.EMP_ID,3,6)as EMP_ID,--this is the line with error"missing 
 comma"
        B.HOLI_DATE,
        B.HOLI_HOURS,
        B.HOLI_REASON,
        SUBSTR(B.HOLI_TIME,1,2)||':'||SUBSTR(B.HOLI_TIME,3,2) AS 
START_TIME,
        SUBSTR(B.HOLI_TIME,6,2)||':'||SUBSTR(B.HOLI_TIME,8,2) AS 
END_TIME,
        SUBSTR(B.AGENT_EMP_ID,3,6) AS AGENT_EMP_ID,
        1,
        sysdate,
        --,$$PLSQL_UNIT
        --,$$PLSQL_UNIT
        sysdate
FROM B

1 Ответ

0 голосов
/ 30 апреля 2019

вы должны удалить INTO A после INSERT Синтаксис в операторе слияния:

merge into A
  using(select col1, col2, col3... from B)
  on (A.col1 = B.value1)
WHEN NOT MATCHED THEN
    INSERT (col1,col2...)
    VALUES (B.value1, B.value2...)
WHEN MATCHED THEN
    UPDATE SET col2= B.value2
...

Не забывайте скобки вокруг списка значений

...