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. hadoop 单机模式 伪分布式 完全分布式区别

    1.单机(非分布式)模式 这种模式在一台单机上运行,没有分布式文件系统,而是直接读写本地操作系统的文件系统,一般仅用于本地MR程序的调试 2.伪分布式运行模式 这种模式也是在一台单机上运行,但用不同的 ...

  2. maven整合ssh框架笔记

    具体工程会上传文件sshpro <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:x ...

  3. 【python接口自动化-requests库】【一】requests库安装

    1.概念 requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更加方便,可以节约我们大量的工作,完全满 ...

  4. java_lambda表达式

    lambda表达式1    由来    概念        是通过策略模式来曲线实现的    lambda表达式2    语法详解    lambda表达式3    目标类型的概念    目标类型推断 ...

  5. 项目管理软件 GanttProject 节日表

    项目管理软件 GanttProject 节日表 GanttProject 是一款项目管理软件,对比一些商业项目管理软件一点不差,有些还更强大,比如以下的节假日自动选择. 文件地址在:C:\Progra ...

  6. Centos6.5安装mariadb的坑坑

    最近在看Ansible,<Ansible权威指南>,然后有个地方是搭建Web应用框架,有个服务器是安装Mariadb,找到官方文档,一直弄,总是报错,换个思路,下载rpm到本地,安装,然后 ...

  7. python运行过程

    程序执行过程 PyCodeObject:PyCodeObject则是Python编译器真正编译成的结果. 当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Pyt ...

  8. jenkins中如何实现执行脚本时的变量共享

    1.主要是利用EnvInject Plugin插件,所以要首先安装插件,安装好后如下图: 2.然后在“增加构建步骤”中,插入一个“Execute Python script” 代码我用的python3 ...

  9. centos下vi的用法大全

    vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令.由于对Unix及Linux系统的任何版本,vi编辑器是完全相 ...

  10. 使用jquery+css实现瀑布流布局

    虽然可以直接使用css实现瀑布流布局,但显示的方式有点问题,所以这儿就直接使用jquery+css来实现瀑布流布局,最终效果如下:      思路是通过将每个小块的position设置为relativ ...