博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oracle自定义存储过程:删除表(无论表是否存在)和检测表是否存在
阅读量:3964 次
发布时间:2019-05-24

本文共 1657 字,大约阅读时间需要 5 分钟。

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

转载地址:http://kkuki.baihongyu.com/

你可能感兴趣的文章
vim 常用命令
查看>>
golang 开源项目
查看>>
ubntu 开发服务进程
查看>>
linux 常用命令以及技巧
查看>>
记录1年免费亚马逊AWS云服务器申请方法过程及使用技巧
查看>>
golang文章
查看>>
Source Insight 经典教程
查看>>
快速打开菜单附件中的工具
查看>>
Windows系统进程间通信
查看>>
linux exec的用法
查看>>
C语言中如何使用宏
查看>>
Http与RPC通信协议的比较
查看>>
Source Insight的对齐问题
查看>>
ubuntu设置开机默认进入字符界面方法
查看>>
chrome 快捷键
查看>>
Linux下buffer和cache的区别
查看>>
程序员不应该再犯的五大编程错误
查看>>
[转载][转帖]Hibernate与Sleep的区别
查看>>
Linux系统的默认编码设置
查看>>
Linux系统调用
查看>>