度量快速开发平台-专业、快速的软件定制快开平台

标题: oracle创建表之前判断表是否存在,如果存在则删除已有表 [打印本页]

作者: 张兴康    时间: 2020-6-4 15:21
标题: oracle创建表之前判断表是否存在,如果存在则删除已有表
在sqlserver中,有if exit()这样的语句,但是在oracle中却没有。如果直接使用drop table那么如果表不存在会报错,导致后续语句无法运行。因此可以通过一个存储过来来进行判断。
主要是查询all_tables表的TABLE_NAME和OWNER,如果表存在,则执行execute immediate 'drop table TABLE_NAME';

  1. --判断表是否存在,如果存在则删除
  2. declare
  3.       num   number;
  4. begin
  5.       select count(1) into num from all_tables where TABLE_NAME = 'EMP' and OWNER='SCOTT';
  6.       if   num=1   then
  7.           execute immediate 'drop table EMP';
  8.       end   if;
  9. end;
  10. /
  11. --创建表
  12. CREATE TABLE EMP
  13.        (EMPNO NUMBER(4) NOT NULL,
  14.         ENAME VARCHAR2(10),
  15.         JOB VARCHAR2(9),
  16.         MGR NUMBER(4),
  17.         HIREDATE DATE,
  18.         SAL NUMBER(7, 2),
  19.         COMM NUMBER(7, 2),
  20.         DEPTNO NUMBER(2));
复制代码


作者: 张兴康    时间: 2020-6-4 15:22

作者: caixuqad    时间: 2020-6-5 19:09

作者: 张兴康    时间: 2020-6-7 14:03
caixuqad 发表于 2017-8-5 19:09


作者: fteair    时间: 2020-6-7 14:22

作者: caixuqad    时间: 2020-6-7 19:28

作者: 张兴康    时间: 2020-6-8 14:31
caixuqad 发表于 2017-8-7 19:28

终帖............ ...............
作者: caixuqad    时间: 2020-6-9 18:21

作者: 张兴康    时间: 2020-6-10 15:08
caixuqad 发表于 2017-8-9 18:21

终帖 终帖 终帖 重要的事情说三遍
作者: caixuqad    时间: 2020-6-10 18:24





欢迎光临 度量快速开发平台-专业、快速的软件定制快开平台 (http://bbs.delit.cn/) Powered by Discuz! X3.2