我需要一个脚本来创建表,或者如果它已经存在,则将其删除,并在重新创建表时将其删除。经过一些研究,我发现CREATE OR REPLACE TABLE在pl / sql中不存在。所以我想出了这个脚本:
CREATE OR REPLACE TABLE
DECLARE does_not_exist EXCEPTION; PRAGMA EXCEPTION_INIT (does_not_exist, -942); BEGIN EXECUTE IMMEDIATE 'DROP TABLE foobar'; EXCEPTION WHEN does_not_exist THEN NULL; END; / CREATE TABLE foobar (c1 INT);
有没有适当的方法来实现此功能?
使用全局临时表似乎是一个更好的选择。但是,如果您坚持在运行时删除和重新添加表,则可以查询_TABLES视图之一(即USER_TABLES,DBA_TABLES,ALL_TABLES)以确定该表是否存在,如果存在,则将其删除,然后创建它:
SELECT COUNT(*) INTO nCount FROM USER_TABLES WHERE TABLE_NAME = 'FOOBAR'; IF nCount <> 0 THEN EXECUTE IMMEDIATE 'DROP TABLE FOOBAR'; END IF; EXECUTE IMMEDIATE 'CREATE TABLE FOOBAR(...)';
分享并享受。