Oracle drop if exists

2023-10-27

参考https://stackoverflow.com/questions/1799128/oracle-if-table-exists

我的官方博客http://blog.alei.tech ,转载请注明。网页地址https://alei.tech/2016/08/12/%E5%9C%A8Oracle%E6%95%B0%E6%8D%AE%E4%B8%AD%E5%AF%BB%E6%89%BE%E4%B8%80%E4%B8%AA%E5%80%BC/

场景

  • 删除表,视图等对象时,静默执行,不返回报错信息
  • 类似dorp table if exists,语句可反复执行
  • 开发人员编写sql,让实施人员执行
  • 直接写drop table abc,如果abc表已经被删除或者不存在,返回报错信息,对于不懂sql的实施人员来说,会产生干扰

代码示例

创建存储过程

  • 适用于drop table, procedure, function, trigger, view, sequence
    create or replace procedure dropObject(ObjName varchar2,ObjType varchar2)
    is
     v_counter number := 0;   
    begin    
      if upper(ObjType) = 'TABLE' then
        select count(*) into v_counter from user_tables where table_name = upper(ObjName);
        if v_counter > 0 then          
          execute immediate 'drop table ' || ObjName || ' cascade constraints';        
        end if;   
      end if;
      if upper(ObjType) = 'PROCEDURE' then
        select count(*) into v_counter from User_Objects where object_type = 'PROCEDURE' and OBJECT_NAME = upper(ObjName);
          if v_counter > 0 then          
            execute immediate 'DROP PROCEDURE ' || ObjName;        
          end if; 
      end if;
      if upper(ObjType) = 'FUNCTION' then
        select count(*) into v_counter from User_Objects where object_type = 'FUNCTION' and OBJECT_NAME = upper(ObjName);
          if v_counter > 0 then          
            execute immediate 'DROP FUNCTION ' || ObjName;        
          end if; 
      end if;
      if upper(ObjType) = 'TRIGGER' then
        select count(*) into v_counter from User_Triggers where TRIGGER_NAME = upper(ObjName);
          if v_counter > 0 then          
            execute immediate 'DROP TRIGGER ' || ObjName;
          end if; 
      end if;
      if upper(ObjType) = 'VIEW' then
        select count(*) into v_counter from User_Views where VIEW_NAME = upper(ObjName);
          if v_counter > 0 then          
            execute immediate 'DROP VIEW ' || ObjName;        
          end if; 
      end if;
      if upper(ObjType) = 'SEQUENCE' then
        select count(*) into v_counter from user_sequences where sequence_name = upper(ObjName);
          if v_counter > 0 then          
            execute immediate 'DROP SEQUENCE ' || ObjName;        
          end if; 
      end if;
    end;
    

使用存储过程

  • 创建temp_table表之前,判断,if exists then drop
  • 此语句示例在pl/sql developer中执行
  • ”/”必须在行首,之前不能有空格
    begin
      dropObject('temp_table','table');
    end;
    /
    create table
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Oracle drop if exists 的相关文章

  • Oracle 数据库 11g 中的访问控制列表 (ACL) 拒绝网络访问

    最近我们从 Oracle 10g 切换到 11g 现在我发现我的邮件功能不起作用 我现在收到错误 ORA 24247 network access denied by access control list ACL 因此 我进行了一些谷歌搜
  • 在 SQL 中搜索 XML 列

    我有一个 XML 文档来存储 Oracle 数据库中的记录 表 CourseXML 将包含 Record Number int XML Type int XMLDoc clob etc 我想通过 XML 标签在 XMLDoc 列中进行搜索
  • 如何动态创建表数据类型的变量?

    在以下查询中 select string 可以返回具有任何可能数据类型的任意数量的列和行 Execute immediate select string into v table variable 例如 select string 可以是
  • oracle嵌套表的最大行数是多少

    CREATE TYPE nums list AS TABLE OF NUMBER Oracle 嵌套表中最大可能的行数是多少 UPDATE CREATE TYPE nums list AS TABLE OF NUMBER CREATE OR
  • Oracle 事务在 C++ 和 Java 之间的传播

    我们有一个现有的 C 应用程序 我们将逐步将其替换为新的基于 Java 的系统 在我们用 Java 完全重新实现所有内容之前 我们期望 C 和 Java 必须相互通信 RMI SOAP 消息传递等 我们尚未决定 现在我的经理认为我们需要 J
  • 运行 Sqoop 导入和导出时如何找到最佳映射器数量?

    我正在使用 Sqoop 版本 1 4 2 和 Oracle 数据库 运行 Sqoop 命令时 例如这样 sqoop import fs
  • 我可以使用 VBA 将密码“传递”到 Excel 中的外部数据库连接吗?

    我正在尝试使用 VBA 隐藏我在 Excel 工作表中设置的数据连接的密码 由于 Excel 以纯文本形式存储外部数据源的密码 因此我想让 VBA 调用表的刷新并提供密码 我录制了刷新表格并输入密码的宏 但令我沮丧的是 它似乎省略了密码部分
  • 从 CTE 插入

    WITH DTL AS SELECT CMPI CODE CMN CDTY MTRL CMI WT FACTOR CMI CNTRCT RATE PL PRESENT PRICE TRM CODE ROUND NVL PRESENT PRI
  • Oracle中如何选择前100行?

    我的要求是获取每个客户的最新订单 然后获取前100条记录 我编写了一个如下查询来获取每个客户的最新订单 内部查询工作正常 但我不知道如何根据结果获得前 100 名 SELECT FROM SELECT id client id ROW NU
  • Postgresql存储过程中基于会话的全局变量?

    在 Oracle 的 PL SQL 中 我可以使用包定义创建基于会话的全局变量 对于 Postgresql 的 PLpg SQL 这似乎是不可能的 因为没有包 只有独立的过程和函数 以下是 PL SQL 将 g spool key 声明为全
  • 将十六进制转换为字符串

    我想用HEXTORAW 从 ASCII 十六进制代码 30 获取 char 值 ASCII HEX 30 应返回 varchar 0 该怎么做呢 是HEXTORAW 正确的功能 你可以使用utl raw http docs oracle c
  • Oracle SQL——从字符串中删除部分重复项

    我有一个表 其中有一列包含字符串 如下所示 static text here 1abcdefg1abcdefgpxq 从这个字符串1abcdefg重复两次 所以我想删除该部分字符串 然后返回 static text here 1abcdef
  • 如何登录Oracle数据库?

    我对 Oracle 数据库中常用的日志记录方法感兴趣 我们的方法如下 我们为要记录的表创建一个日志表 日志表包含原始表的所有列以及一些特殊字段 包括时间戳 修改类型 插入 更新 删除 修改者的 id 原始表上的触发器为每次插入和删除创建一个
  • MySQL中是否有类似Oracle中“level”的函数[重复]

    这个问题在这里已经有答案了 我面临一个场景 如果输入是 10 我想要一个数字序列 1 2 3 10 在甲骨文中levelfunction 提供了该功能 我想知道如何在 MySQL 中执行相同的任务 谢谢 您可以在 mysql 中使用此查询
  • CREATE TABLE 和 CREATE ANY TABLE 权限之间的区别

    我不明白这两种特权之间的区别 我找到了这两个解释 但这对我没有帮助 CREATE TABLE gt Enables a user to create a table owned by that user CREATE ANY TABLE g
  • 是否允许在流水线 PL/SQL 表函数中使用 SELECT?

    管道函数的文档指出 在 SQL 语句 通常是SELECT 并且在大多数示例中 管道函数用于数据生成或转换 接受客户作为参数 但不发出任何 DML 语句 现在 从技术上讲 可以使用 SELECT 而不会出现 Oracle 中的任何错误 ORA
  • Oracle 数据库 12c 尝试连​​接时出错:网络适配器无法建立连接

    我第一次安装Oracle数据库12c 我正确地遵循了所有步骤并将其安装在 Windows 7 64 位上 但是当我单击 SQL Developer 并尝试创建新连接时 我输入了用户名和密码等信息 最后单击 测试 按钮 我得到了这个错误消息
  • Oracle:如果表存在

    我正在为 Oracle 数据库编写一些迁移脚本 并希望 Oracle 有类似于 MySQL 的东西IF EXISTS构造 具体来说 每当我想删除 MySQL 中的表时 我都会执行类似的操作 DROP TABLE IF EXISTS tabl
  • APEX:从临时表下载 BLOB

    我正在尝试使用 Oracle APEX 4 1 1 构建一个简单的查看应用程序 要显示的信息位于与包含 APEX 应用程序访问的架构的数据库不同的数据库上的表中 使用视图 View 访问此远程表 远程表视图 和数据库链接 视图按预期工作 包
  • 使用 xmlagg 时出现子查询错误和太多值

    我在连接许多大型表中的所有数据时遇到问题 我昨天对此提出了问题 但不幸的是 listagg 似乎不是一个好的选择 链接子查询返回多行 https stackoverflow com questions 54651144 subquery r

随机推荐

  • VUE table 列宽度百分比自适应

    由于原来项目中 前台列表页面 使用具体数值的列的宽度 有的电脑分辨率问题造成最右侧的需要拉滚动条 考虑到使用更简单 合理 改成百分比 原代码
  • 人体2D关键点检测 文章+代码(2020-2016)

    目录 2020 HigherHRNet CVPR2020 MSRA微软亚洲研究院 bottom up DarkPose CVPR2020 2nd place entry of COCO Keypoints Challenge ICCV 20
  • STRIDE威胁建模(面向安全应用程序开发的威胁分析框架)

    STRIDE 威胁建模 STRIDE 威胁模型由Microsoft安全研究人员于 1999 年创建 是一种以开发人员为中心的威胁建模方法 通过此方法可识别可能影响应用程序的威胁 攻击 漏洞 进而设计对应的缓解对策 以降低安全风险并满足公司的
  • Uncaught TypeError: Cannot read property 'offsetTop' of null

    在获取内容区块高度 无滚动 时使用offsetTop报如下错误 Uncaught TypeError Cannot read property offsetTop of null 实现效果如图 主要js代码 内容可视区域的高度 client
  • nacos怎么开启账号密码登录

    Nacos 默认是不启用账号密码登录的 但你可以通过修改配置来启用账号密码登录以增强安全性 以下是在 Nacos 中启用账号密码登录的步骤 打开 Nacos 配置文件 nacos conf application properties 在文
  • 如何使VMware虚拟机下的虚拟机可以相互连接又可以访问外网

    由于要练习搭建Hadoop集群 所以不得不在自己的电脑上搭建几台虚拟机试试 这里博主打算搭建一台有界面的Ubuntu系统 麒麟系统 以及几台服务器版的Ubuntu系统 通过带界面的系统进行ssh远程控制去操作其他的几台虚拟机 带界面的是国产
  • ajax post 请求 一直提示 404 not found textStatus error

    2019独角兽企业重金招聘Python工程师标准 gt gt gt ajax post 请求 一直提示 404 not found textStatus error var dataParams schoolSupplierIds scho
  • 虚拟机的防火墙设置指令

    查看防火墙服务状态 systemctl status firewalld 开启防火墙 service firewalld start 关闭防火墙 service firewalld stop 重启防火墙 service firewalld
  • 权限管理02-前台左侧菜单栏实现(根据用户获取菜单树)

    实现技术 vue element ui 1 后台管理主页布局
  • Qt 信号和槽机制

    这篇文章篇幅很长 阅读可能需要10分钟以上 如果你是Qt的初学者 前面的6个章节就已经够用了 至少能够让你在一些普通的场面撑得起场子 但如果你想了解的更深一点 最后一个章节是必不可少的内容 Qt提供了很多我们学习的文档 甚至是源码 阅读源码
  • wenda+chatGLM-6B构建本地知识库过程记录(含问题)

    目录 本机环境 搭建过程 1 下载wenda项目 2 准备虚拟环境 3 修改配置文件 4 知识库预先构建索引 问题记录 本机环境 OS Win11 显卡 RTX 4090 GPU使用情况 搭建过程 1 下载wenda项目 项目地址 GitH
  • QString 乱谈(3)-Qt5与中文

    两个月前 简单写过QTextCodec中的setCodecForTr等终于消失了 Qt5 在Qt论坛上 不少用户都对去掉这两个函数表示特别的不了解 为什么会这样 我想多少能说明不少用户对C 中源码字符集和执行字符集的不太了解 从而造成对这种
  • 02=windows下安装PostgreSQL(The database cluster initialisation failed)

    The database cluster initialisation failed windows下安装报错 The database cluster initialisation failed 我没找到解决方法 win10下报错 win
  • tpcc-mysql_TPCC-MySQL安装、使用及结果解读

    tpcc mysql用于MySQL基准测试 percona基于TPC C 下面简写成TPCC 衍生出来的产品 下面对tpcc mysql进行安装然后使用 最后结果解读 安装very easy let s do it 一 下载epel源 ro
  • 关于解决安装ubuntu双系统中出现的不能识别磁盘分区、空闲空间变不可用问题

    分享交流 谢谢指正 仅供参考 最近给自己电脑重装了windows系统 win7旗舰版 然后就索性又装了ubuntu的Linux套件 弄个双系统 方便今后的Linux学习 其中在分区挂载点这一块也碰到了不少问题 花了些功夫 好在都解决了 现在
  • ubuntu22.04编译安装gcc12.2

    ubuntu22 04编译安装gcc12 2 更新apt sudo apt get update 安装wget sudo apt get install wget zlib2 make 3 下载相应版本的gcc安装包 把下面的地址换成相应版
  • C++:this

    this 它指向当前对象 通过它可以访问当前对象的所有成员 所谓当前对象 是指正在使用的对象 例如对于stu show stu 就是当前对象 this 就指向 stu this 只能用在类的内部 通过 this 可以访问类的所有成员 包括
  • H264码流RTP封装方式详解

    H264码流RTP封装方式详解 文章目录 H264码流RTP封装方式详解 1 H264基本概念 2 NALU Header介绍 3 RTP封装H264码流 3 1 单一NALU模式 3 2 组合帧封装模式 3 3 分片封装模式 4 代码解析
  • Qt的4种多线程实现方式

    一 QThread类的run 一 实现方法 新建一个集成QThread的类 重写虚函数run 通过run启动线程 二 示例 class WorkerThread public QThread Q OBJECT void run overri
  • Oracle drop if exists

    参考https stackoverflow com questions 1799128 oracle if table exists 我的官方博客http blog alei tech 转载请注明 网页地址https alei tech 2