`

Oracle 的drop table if exists功能

 
阅读更多

Oracle创建表时,常遇到先删除后创建的情况,而它又没有drop table... if exists语法。为此可以使用user_objects数据字典和动态sql语句实现类似的功能,如下所示:

create or replace procedure proc_dropifexists(
p_table in varchar2
) is
v_count number(10);
begin
select count(*)
into v_count
from user_objects
where object_name = upper(p_table);

if v_count > 0 then
execute immediate 'drop table ' || p_table ||' purge';
end if;
end;
/

--调用
exec proc_dropifexists('mytable');

分享到:
评论

相关推荐

    oracle数据库学习笔记总结

    MySQL的: drop table if exists 表名; SQL Server的: IF EXISTS (SELECT name FROM sysobjects WHERE name = '表名' AND type = 'U') DROP TABLE 表名; Oracle的: create or replace table 表名 ...; -- 直接写...

    Oracle删除表、字段之前判断表、字段是否存在

    在Oracle中若删除一个不存在的表,如 “DROP TABLE tableName”,则会提示: ORA-00942:表或视图不存在 若在程序中执行该语句则会报异常,这就需要我们在删除表前先判断该表是否存在,若存在则删除. DECLARE num NUMBER;...

    DROP TABLE在不同数据库中的写法整理

    Oracle数据库系统中,`DROP TABLE`命令没有`IF EXISTS`选项。这意味着如果你尝试删除一个不存在的表,将会引发一个错误。为了避免这个错误,你需要使用PL/SQL的异常处理。下面的代码块展示了如何在Oracle中安全地...

    oracle-use.rar_Oracle drop use_oracle

    "oracle-use.rar_Oracle drop use_oracle"这个压缩包包含了与Oracle数据库使用相关的多个文档,包括查询、操作、PL/SQL语法、数据导入导出、连接配置以及备份恢复等方面的知识。 首先,我们来关注"插入数据"这一...

    在MySQL中创建实现自增的序列(Sequence)的教程

    项目应用中,曾有以下一个场景: 接口中要求发送一个int类型的流水号,由于多线程模式,如果用时间戳,可能会有重复的情况...DROP TABLE IF EXISTS sequence; CREATE TABLE sequence ( name VARCHAR(50) NOT NULL,

    初识MySQL的入门笔记

    删除数据表的命令是`DROP TABLE`,如果想确保表存在才删除,可以使用`DROP TABLE IF EXISTS`。例如,删除名为demo01的表可以写为`DROP TABLE IF EXISTS demo01;`。 总的来说,MySQL的学习涵盖了数据库的基本概念、...

    最新全国行政区划编码 sql(3级,2016-08-09 统计局发布)

    DROP TABLE IF EXISTS `sys_area`; CREATE TABLE `sys_area` ( `code` varchar(20) NOT NULL default '' COMMENT '行政区划编码', `parent_code` varchar(20) default NULL COMMENT '父级行政区划编码', `name` ...

    数据库(Oracle+SQL) 学习笔记

    DROP TABLE IF EXISTS table_name; CREATE TABLE table_name (column_definition,...); ``` - **SQL Server**: ```sql IF EXISTS (SELECT name FROM sysobjects WHERE name = 'table_name' AND type = 'U') ...

    mysql生成oracle序列

    DROP TABLE IF EXISTS `sequence`; CREATE TABLE `sequence` ( `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_croatian_ci NOT NULL, `current_value` int(11) NOT NULL, `increment` int(11) NOT NULL ...

    oracle中not exists对外层查询的影响详解

    前言 最近同事发现了一个问题,在12c中跑的buffer get很高,但是在10g中跑的buffer很低。...drop table t1; drop table t2; create table t1 (id number,name varchar2(20),dep_id varchar2(10)); create table t

    数据库知识小结

    DROP TABLE IF EXISTS teacher; DROP TABLE IF EXISTS student; -- 创建表 CREATE TABLE teacher (teaID INT PRIMARY KEY, name VARCHAR(50), age INT); CREATE TABLE student (stuID INT PRIMARY KEY, name ...

    初识MySQL的入门笔记.pdf

    ` 或 `DROP TABLE IF EXISTS 表名;` - **修改表**:可以更改表名、字段名、字段类型等,如`ALTER TABLE 表名 RENAME AS 新表名;` 或 `ALTER TABLE 表名 CHANGE 原字段名 新字段名 新类型;` - **添加字段**:使用`...

    常用 SQL 语句大全

    2. DROP TABLE:删除一个数据库表,例如`DROP TABLE IF EXISTS table_name;` 3. ALTER TABLE:修改数据库表结构,如添加、删除或修改字段,例如`ALTER TABLE table_name ADD column_name datatype;` 4. CREATE VIEW...

    SQL指令语法速查

    DROP TABLE IF EXISTS table_name; ``` 11. **索引** 索引用于加速查询,可使用`CREATE INDEX`创建,`DROP INDEX`删除: ``` CREATE INDEX index_name ON table_name (column_name); DROP INDEX index_name; ...

    oracle到sqlserver存储过程语法转换

    IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'dbo.function_name') AND type in (N'FN', N'IF', N'TF')) DROP FUNCTION dbo.function_name; GO CREATE FUNCTION dbo.function_name (@p...

    数据库学习笔记

    MySQL使用`DROP TABLE IF EXISTS`,SQL Server使用`IF EXISTS`和`DROP TABLE`,而Oracle则直接在创建表的语句中用`CREATE OR REPLACE TABLE`来覆盖已存在的表。 3. **建表语句**: 创建表的语句定义了表的结构,...

    数据库知识

    在此示例中,首先通过`DROP TABLE IF EXISTS`语句删除已存在的`student`表,然后创建一个新的`student`表,并定义了四个字段:`id`、`name`、`birth`和`score`。接着使用`INSERT INTO`语句向表中插入了三条记录。 ...

Global site tag (gtag.js) - Google Analytics