美文网首页
oracle可重复执行脚本

oracle可重复执行脚本

作者: 忧从中来 | 来源:发表于2019-07-14 23:02 被阅读0次

       之前的一次项目上线,使用CTAS的方式进行扩表,涉及到表的删除。由于自动化部署工具的问题,数据库脚本执行了两次。导致数据库表被删除(万幸有备份)。
       抛开自动化部署工具的问题,这一次数据库脚本也存在问题,一个足够健壮的线上数据库脚本应该是可以被重复执行的。下面给出oracle一些常用的可重复执行脚本示例。

表创建

declare
    create_str         varchar(5000) := 'create table TABLE_NAME ...';
    count_flag         number;
begin
    select count(*) into count_flag from user_tables where table_name = 'TABLE_NAME';
    if count_flag > 0 then
        execute immediate create_str;
    else
        execute immediate 'drop table TABLE_NAME';
        execute immediate create_str;
    end if;
end

表字段添加

declare
    add_str         varchar(5000) := 'alter table TABLE_NAME add COLUMN_NAME varchar(32)';
    count_flag         number;
begin
    select count(*) into count_flag from user_tab_columns 
        where table_name = 'TABLE_NAME' and column_name = 'COLUMN_NAME ';
    if count_flag < 1 then
        execute immediate add_str;
    end if;
end

原理很简单,就是利用各种用户视图,判断当前执行结果是否已存在,然后再决定是否执行。虽然简单,但在工程实践中具有较重要意义,需要掌握。

相关文章

  • oracle可重复执行脚本

    之前的一次项目上线,使用CTAS的方式进行扩表,涉及到表的删除。由于自动化部署工具的问题,数据库脚本执行了两次。导...

  • Oracle安装

    安装 创建数据库用户 执行数据库脚本 执行DRM的建表脚本。 要求: 1、Oracle 11g及以上版本; 2、实...

  • MYSQL可重复执行脚本添加索引,字段

    添加字段 drop procedure if exists add_column_if; delimiter $$...

  • 02.Oracle数据库基本操作

    Oracle数据库基本操作 PL/SQL工具提示 在工具中,进行查询,如果不选中就进行执行操纵,会将整个脚本执行!...

  • 27. 性能测试总体流程

    总体流程 收集需求 开发测试脚本 执行测试 分析及报告 性能优化 执行测试 分析及报告 重复以上步骤... 收集需...

  • oracle 命令行执行脚本

    SQL*Plus 命令登录数据库格式 username 用户名称password 密码host 服务器IPpo...

  • Postman使用

    通过postman.setNextRequest()方法调整case执行 postman的脚本执行本身是线性的,可...

  • 1.15 运行命令直至执行成功

    《Linux Shell 脚本攻略(第 2 版)》读书笔记 定义重复执行函数repeat() { while tr...

  • 使用文件锁flock实现进程互斥

    最近写了一个python脚本,对Android设备进行自动化测试。当重复执行脚本时,如果不对访问设备进行锁控制,不...

  • Redis学习笔记-Lua脚本

    前言 Redis在2.6版推出了脚本功能,允许开发者使用Lua语言编写脚本传到Redis中执行。 在Lua脚本中可...

网友评论

      本文标题:oracle可重复执行脚本

      本文链接:https://www.haomeiwen.com/subject/dsoikctx.html