CREATE OR REPLACE PROCEDURE STG.FP_REMOVE_MST_OLD_DATA (EXITCODE OUT NUMBER)
IS
/***********************************************************************
** 存储过程名称: FP_REMOVE_OLD_DATA
** 存储过程创建日期:
** 存储过程创建人:
** 目的: 删除FP上次在ODS的输出数据 ** 输入参数:
** 输出参数:EXITCODE 预留接口给外部调用者,让其知道存储过程的执行结果,0.预定逻辑执行完成; 1.遇到异常,预定逻辑未执行完成
** 返回值:
** 用法:
**
** 修订版本:
** 版本号 修订时间 修订人 描述
** --------- ---------- ------------ ------------------------
** 1.0
**
**********************************************************************/
----------------------- 以下定义存储过程使用的变量---------------------------------
V_PKGName VARCHAR2 (40) := 'PKG_FP';
V_ProName VARCHAR2 (40) := 'FP_REMOVE_MST_OLD_DATA';
V_Action VARCHAR2 (1);
V_Step NUMBER := 0;
V_MainTable VARCHAR2 (40);
E_ErrMessage VARCHAR2 (3000); ----------------------- 以下是存储过程的主体------------------------------------------ BEGIN
EXITCODE := 0; DELETE FROM STG.DISABLED_R_CONSTRAINT; INSERT INTO STG.DISABLED_R_CONSTRAINT SELECT CONSTRAINT_NAME from all_constraints where constraint_type='R' and status='DISABLED' AND OWNER='ABPPMGR'; COMMIT; V_Step := V_Step + 1;
V_Action := PKG_CONSTANT.CONS_ACTION_DELETE;
V_MainTable := 'ALL';
PKG_UTIL.CREATELOG (
V_PKGName, --Put package name here
V_ProName, --Put procedure name here
V_Step, --Step seqence No. if have
V_Action, --Action 'I','D','U','T'
PKG_CONSTANT.CONS_MSG_INFO, --Message tppe, 'SUCCESS' or 'EXCEPTION'
'start to delete old data.', --Any generic information here
V_MainTable); --Major table name processed
FOR c_cons_dis
IN (SELECT 'alter table '
|| T2.owner
|| '.'
|| T2.table_name
|| ' disable constraint '
|| t2.CONSTRAINT_NAME
sqltext
FROM all_constraints T2
WHERE t2.owner = 'ABPPMGR'
AND T2.CONSTRAINT_TYPE = 'R'
AND T2.table_name IN
(select phy_mst from abppmgr.SYS_TABLE_MAP))
LOOP
EXECUTE IMMEDIATE c_cons_dis.sqltext;
END LOOP; FOR c_trunc
IN (SELECT 'truncate table ABPPMGR.' || table_name || ' drop storage' sqltext
FROM all_tables
WHERE owner = 'ABPPMGR'
AND table_name IN
('MST_BOMCOMPONENTS',
'MST_ROUTINGOPERATION',
'MST_ROUTINGHEADER',
'MST_BOMHEADER',
'MST_BOMCOMPONENTS_P',
'MST_ITEMMASTER',
'MST_ITEMSITEMASTER',
'MST_ITEMBOMROUTING_P',
'MST_ITEMGROUPMASTER',
'MST_OPRESOURCE',
'MST_ITEMSITEIPPARM',
'MST_APPRSUPITEM',
'MST_UOMCONVERSION',
'MST_ITEMGROUPDETAIL',
'MST_APPRSUPITEM_P',
'MST_ITEMBOMROUTING',
'MST_SUPPLIERCALENDAR',
'PURCHORDLINE',
'INVENTORY',
'INVENTORYPROPERTY',
'SALESORDERLINE',
'SALESORDERLINE_P',
'FORECASTDETAIL'))
LOOP
EXECUTE IMMEDIATE c_trunc.sqltext;
END LOOP; FOR c_cons_en
IN (SELECT 'alter table '
|| T2.owner
|| '.'
|| T2.table_name
|| ' enable novalidate constraint '
|| t2.CONSTRAINT_NAME
sqltext
FROM all_constraints T2
WHERE t2.owner = 'ABPPMGR'
AND T2.CONSTRAINT_TYPE = 'R'
AND T2.table_name IN
(select phy_mst from abppmgr.SYS_TABLE_MAP) AND T2.CONSTRAINT_NAME NOT IN (SELECT CONSTRAINT_NAME FROM STG.DISABLED_R_CONSTRAINT) )
LOOP
EXECUTE IMMEDIATE c_cons_en.sqltext;
END LOOP;
V_Step := V_Step + 1;
V_Action := PKG_CONSTANT.CONS_ACTION_DELETE;
V_MainTable := 'ALL';
PKG_UTIL.CREATELOG (V_PKGName, --Put package name here
V_ProName, --Put procedure name here
V_Step, --Step seqence No. if have
V_Action, --Action 'I','D','U','T'
PKG_CONSTANT.CONS_MSG_INFO, --Message tppe, 'SUCCESS' or 'EXCEPTION'
'remove data completed.', --Any generic information here
V_MainTable);
EXCEPTION
--总程序异常处理部分
WHEN OTHERS
THEN
BEGIN
ROLLBACK;
EXITCODE := 1;
e_ErrMessage :=
SUBSTR (SQLERRM, 1, 1000)
|| SUBSTR (DBMS_UTILITY.FORMAT_ERROR_BACKTRACE, 1, 2000);
PKG_UTIL.CREATELOG (V_PKGName,
V_ProName,
V_Step,
V_Action,
PKG_CONSTANT.CONS_MSG_EXCEPTION,
e_ErrMessage,
V_MainTable);
END;
END;
/

循环TRUNCATE表,再ENABLE约束索引等的更多相关文章

  1. truncate有外键约束的表,报ORA-02266处理。

    问题描述:当父表有子表的外键约束时,无法直接truncate父表.报ORA-02266: unique/primary keys in table referenced by enabled fore ...

  2. 总结: MySQL(基础,字段约束,索引,外键,存储过程,事务)操作语法

    1. 显示数据库列表 show databases; # 查看当前所有数据库 show databases \G   #以行的方式显示 2. 在命令行中,执行sql语句 mysql -e 'show ...

  3. 2-16 MySQL字段约束-索引-外键

    一:字段修饰符 1:null和not null修饰符 我们通过这个例子来看看 mysql> create table worker(id int not null,name varchar(8) ...

  4. mysql字段约束-索引-外键---3

    本节所讲内容: 字段修饰符 清空表记录 索引 外键 视图 一:字段修饰符 (约束) 1:null和not null修饰符   我们通过这个例子来看看 mysql> create table wo ...

  5. truncate表hang住(等待时间较长),出现enq:RO fast object reuse等待事件

    有一个应用truncate表等待了一晚上,一个定时任务,跑了几年了,今天早上来发现昨晚没有执行完成,hang住了,查询发现等待事件 fast object reuse. 10.2.0.4的库 Bug ...

  6. 1.mysql表优化和避免索引失效原则

    表优化 1.单表优化 建立索引 根据sql的实际解析顺序建立复合索引 最佳左前缀,保持索引的定义和使用顺序一致 2.多表优化 连接查询 小表驱动大表:对于双层循环来说,外层循环(数据量)越小,内层循环 ...

  7. SQL Server查询性能优化——堆表、碎片与索引(二)

    本文是对 SQL Server查询性能优化——堆表.碎片与索引(一)的一些总结.  第一:先对 SQL Server查询性能优化——堆表.碎片与索引(一)中的例一的SET STATISTICS IO之 ...

  8. SQL 约束 索引

    --约束constraint--not null 非空约束create table demo01(empno number(4),ename varchar2(10) not null,job var ...

  9. SQL Server -- 回忆笔记(二):增删改查,修改表结构,约束,关键字使用,函数,多表联合查询

    SQL Server知识点回忆篇(二):增删改查,修改表结构,约束,关键字使用,函数,多表联合查询 1. insert 如果sql server设置的排序规则不是简体中文,必须在简体中文字符串前加N, ...

随机推荐

  1. 《JavaScript 设计模式与开发实战》第一部分(1、2、3章)笔记

    第1章:面向对象的JavaScript 动态类型和鸭子类型 编程语言按照数据类型大体可以分为两类: ① 静态类型语言:在编译时便已确定变量的类型. ② 动态类型语言:变量类型要到程序运行的时候,待变量 ...

  2. Gym - 100796I:Shell Game(圆台的最大内接球半径)

    pro:如题.给定上圆半径r,下圆半径R,高度h.问最大内接球半径. sol:由对称性,我们放到二维来看,即给这么一个梯形,问最大内接圆半径. 证明:如果是一个三角形的内接圆C,他内切于三边. 现在这 ...

  3. SQLI DUMB SERIES-12

    (1)检测闭合方式:在username上输入" admin" " 说明输入的username后还有双引号和括号 方法一: (2)通过其他途径知道用户名即可.如 输入&qu ...

  4. 位运算 - a^b

    求 a 的 b 次方对 p 取模的值. 输入格式 三个整数 a,b,p ,在同一行用空格隔开. 输出格式 输出一个整数,表示a^b mod p的值. 数据范围 1≤a,b,p≤109 输入样例: 3 ...

  5. POJ 1284:Primitive Roots(素数原根的个数)

    Primitive Roots Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5709 Accepted: 3261 Descr ...

  6. python入门第二天

    啦啦啦啦啦!!!!我又来啦,几天该正式开始学习python语言啦,好高兴啊!!!今天学习的主要内容是变量和简单的数据类型!! 变量和简单的数据类型 大家回忆一下昨天的Hello Python Worl ...

  7. WIdo联网代码中文注释

    代码如下 /*************************************************** 这是一个例子的dfrobot维多-无线集成物联网建兴传感器和控制节点 *产品页面及更 ...

  8. 第二节《Git暂存区》

    在上一节中我们的demo版本库经历了一次提交,我们可以使用git og --stat查看一下提交日志. [root@git demo]# git log --statcommit 986a1bd458 ...

  9. oracle-rman-3

    http://blog.csdn.net/leshami/article/details/6032525 rman概述及体系结构 http://blog.itpub.net/23513800/view ...

  10. Linux(Centos7)下搭建SVN服务器

    操作系统: CentOS 7.6 64位 第一步:通过yum命令安装svnserve,命令如下: 检测svn是否安装: rpm -qa subversion #检查现有版本,如果输入命令后没有提示的话 ...