Oracle - я не могу создать и использовать синоним в одном скрипте? - PullRequest
0 голосов
/ 15 октября 2018

У меня есть скрипт в SQL Developer, где я (хочу) СОЗДАТЬ ИЛИ ЗАМЕНИТЬ синоним, использовать синоним в SELECT, а затем УДАЛИТЬ синоним (очистить после себя).

Но еслиСиноним еще не существует, когда я запускаю скрипт, я получаю сообщение об ошибке «таблица или представление не существует», и скрипт не запускается.Если я создаю синоним отдельно, чтобы он существовал при запуске сценария, сценарий компилируется и выполняется нормально.Синоним заменяется, используется и удаляется просто отлично.Но тогда я больше не могу запускать сценарий.

Итак ... компилятор достаточно умен, чтобы знать, что «таблица или представление» не существует, но не настолько умен, чтобы знать, что скриптсам создает синоним.

Есть ли способ обойти это ??

Я создал таблицу:

CREATE TABLE X (COLUMNA VARCHAR(10), COLUMNB VARCHAR(10)); 

Я вставляю некоторые данные:

INSERT INTO X(COLUMNA, COLUMNB) VALUES ('HELLO','WORLD'); 

Когда я запускаю это в блоке:

CREATE OR REPLACE SYNONYM TESTSYN1 FOR X;
SELECT * FROM testsyn1;
DROP SYNONYM testsyn1;

я получаю «таблица или представление не существует» в операторе SELECT.Если я выделяю и запускаю сам CREATE, затем выделяю и запускаю SELECT сам, затем выделяю и запускаю DROP сам по себе, все хорошо.Я просто не могу запустить их вместе.

...