Сбой синтаксического анализа SQL, не знаете, в чем проблема? - PullRequest
2 голосов
/ 28 ноября 2011

Это нормально разбирает:

MERGE INTO SECURE_GROUPS USING
    (SELECT :P94_NAME name FROM dual) data
ON (data.name = PEOPLE.PERSON_NAME)
WHEN NOT MATCHED THEN
    INSERT (PERSON_NAME) VALUES (data.name);

Это не удалось:

 MERGE INTO SECURE_GROUPS USING
        (SELECT :P94_NAME name, :P94_NUMBER num FROM dual) data
    ON (data.name = PEOPLE.PERSON_NAME)
    WHEN NOT MATCHED THEN
        INSERT (PERSON_NAME, PERSON_NUMBER) VALUES (data.name, data.num);

Сообщение об ошибке:

1 ошибка произошла ORA-06550: строка 10, столбец 51: PL / SQL: ORA-00923: ключевое слово FROM не найдено там, где ожидается ORA-06550: строка 9, столбец 1: PL / SQL: инструкция SQL игнорируется

1 Ответ

2 голосов
/ 28 ноября 2011

Я думаю, проблема в том, чтобы использовать PEOPLE.PERSON_NAME, как вы, без выбора.Попробуйте сделать это так:

MERGE INTO SECURE_GROUPS
    USING (
        select :P94_NAME name, :P94_NUMBER num from dual
    ) data
    ON (data.name in (select PERSON_NAME from PEOPLE))
    WHEN NOT MATCHED THEN
        INSERT (PERSON_NAME, PERSON_NUMBER) VALUES (data.name, data.num)
...