• oracle自定义存储过程:删除表(无论表是否存在)和检测表是否存在


    oracle删除表,如果表不存在,就报错,在跑大型脚本(脚本长且耗时的时候)比较麻烦,一般希望的是点开始然后脚本运行到结束,不可能一直盯着屏幕等弹出提示手工点掉,mysql就很好有drop table if not exist功能

    CREATE OR REPLACE PROCEDURE p_drop_table_if_exist(p_vc2_tbl_name  IN all_tables.table_name%TYPE,
                                        p_vc2_tbl_owner IN all_tables.owner%TYPE DEFAULT USER) IS
        v_num_tbl_count NUMBER(4);
        v_vc2_sql_stmt  VARCHAR2(1000);
      BEGIN
        -- Check if table already exists
        p_chk_table_exist(p_vc2_tbl_name, p_vc2_tbl_owner, v_num_tbl_count);
        IF (v_num_tbl_count != 0) THEN
          -- Table already exists and must be dropped
          v_vc2_sql_stmt := 'DROP TABLE ' || CASE
                              WHEN p_vc2_tbl_owner IS NOT NULL THEN
                               p_vc2_tbl_owner || '.'
                            END || p_vc2_tbl_name || ' purge'
                            ;
          --dbms_output.put_line(v_vc2_sql_stmt);
          EXECUTE IMMEDIATE v_vc2_sql_stmt;
        END IF;
      END;
    
    
    
    
    CREATE OR REPLACE PROCEDURE p_chk_table_exist(p_vc2_tbl_name  IN all_tables.table_name%TYPE,
                                    p_vc2_tbl_owner IN all_tables.owner%TYPE DEFAULT USER,
                                    p_num_tbl_count OUT NUMBER -- 1 if table exists, 0 if it doesn't
                                    ) IS
        v_vc2_tbl_name all_tables.table_name%TYPE := UPPER(p_vc2_tbl_name);
      BEGIN
    
        IF p_vc2_tbl_owner IS NOT NULL THEN
          SELECT COUNT(1)
            INTO p_num_tbl_count
            FROM all_tables
           WHERE table_name = v_vc2_tbl_name
             AND owner = UPPER(p_vc2_tbl_owner);
        ELSE
          SELECT COUNT(1)
            INTO p_num_tbl_count
            FROM user_tables
           WHERE table_name = v_vc2_tbl_name;
        END IF;
      END p_chk_table_exist;
    

    have fun

  • 相关阅读:
    Hibernate 笔记 之 三 基础优化方面
    Hibernate 笔记 之 二 查询
    Hibernate 笔记 之 一 创建与配置
    hibernate初次配置及测试
    CentOS 7.3 安装MySQL--Java--Tomcat
    Spring AOP:自动注入参数值
    Spring AOP:实现Request信息获取
    IntelliJ IDEA导出项目文档
    IntelliJ IDEA:Shortcut Key
    iText生成PDF
  • 原文地址:https://www.cnblogs.com/yongestcat/p/11835935.html
Copyright © 2020-2023  润新知