【发布时间】:2016-02-16 05:16:08
【问题描述】:
我正在尝试通过我的 java 应用程序使用我生成的模式文件创建数据库。在架构中,我也包含了删除查询。但我想对 DROP QUERY 做一些改进。所以我想在运行删除查询之前检查数据库对象的存在,并且只有在它存在时才删除。 我用谷歌搜索它并找到了一些 oracle 链接,一些链接建议以下语法,一些提到 ORACLE does not support such syntax。
SYNTAX A:
IF EXISTS DROP TABLE TABLE_NAME
SYNTAX B:
DROP [TEMPORARY] TABLE [IF EXISTS]
tbl_name [, tbl_name] ...
[RESTRICT | CASCADE]
我还尝试了以下查询:-
IF EXISTS (SELECT * FROM dba_objects WHERE OBJECT_NAME = 'BBB' )
DROP TABLE [BBB]
但它给出了错误:-
Error starting at line 2 in command:
DROP TABLE [BBB]
Go
Error report:
SQL Error: ORA-00903: invalid table name
00903. 00000 - "invalid table name"
*Cause:
*Action:
Error starting at line 1 in command:
IF EXISTS (SELECT * FROM dba_objects WHERE OBJECT_NAME = 'BBB' ) DROP TABLE [BBB]
Error report:
Unknown Command
我参考了以下链接:- https://community.oracle.com/thread/2421779?tstart=0
如果有任何其他查询可以在表存在的情况下删除表,请建议我。
【问题讨论】:
标签: oracle11g database-schema ddl