PLS-00103: Обнаружен символ «конец файла» при ожидании одного из следующего: если - PullRequest
0 голосов
/ 16 мая 2019

Новичок в SQL и не могу понять, почему я получаю вышеуказанную ошибку в коде.

BEGIN
IF NOT EXISTS(SELECT 1 FROM addresses WHERE address.upper() = 'EXAMPLE@EXAMPLE.COM') THEN
    INSERT INTO addresses
                     (id, type, address
                     )
              VALUES ('123', 'UNREGISTERED', 'EXAMPLE@EXAMPLE.COM'
                     );

END

Ответы [ 2 ]

0 голосов
/ 16 мая 2019

Аарон попробуй эту вставку:

INSERT INTO addresses (id, type, address)
SELECT '123', 'UNREGISTERED', 'EXAMPLE@EXAMPLE.COM' FROM dual
WHERE NOT EXISTS (SELECT 1 FROM addresses WHERE UPPER(address) = 'EXAMPLE@EXAMPLE.COM');
0 голосов
/ 16 мая 2019

Во-первых, PL / SQL не допускает EXISTS в качестве условия IF.

Во-вторых, если вы хотите предотвратить дублирование, не используйте IF !!! Позвольте базе данных обеспечить целостность данных с уникальным ограничением или индексом:

create unique index unq_addresses_addresses on (upper(address));

В-третьих, функция upper(), и она называется upper(address), а не address.upper().

И, наконец, вы действительно хотите, чтобы адреса были уникальными? Казалось бы, разные пользователи или типы могут иметь один и тот же адрес.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...