Oracle-我无法在同一脚本中创建和使用同义词吗?

时间:2018-10-15 17:21:38

标签: oracle oracle-sqldeveloper synonym

我在SQL Developer中有一个脚本,我想要(创建)或替换一个同义词,在SELECT中使用该同义词,然后删除该同义词(在我自己之后清理)。

但是,如果在运行脚本时同义词不存在,则会出现错误“表或视图不存在”,并且脚本将无法运行。如果我分别创建同义词,以便在运行脚本时存在该同义词,则脚本将编译并运行OK。同义词被替换,使用和删除都很好。但是后来我不能再运行脚本了。

所以...编译器足够聪明,可以知道“表或视图”不存在,但是不够聪明,可以知道脚本本身创建了同义词。

有没有解决的办法?

我创建了一个表格:

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,那一切都很好。我只是不能一起运行它们。

0 个答案:

没有答案