循环TRUNCATE表,再ENABLE约束索引等
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约束索引等的更多相关文章
- truncate有外键约束的表,报ORA-02266处理。
问题描述:当父表有子表的外键约束时,无法直接truncate父表.报ORA-02266: unique/primary keys in table referenced by enabled fore ...
- 总结: MySQL(基础,字段约束,索引,外键,存储过程,事务)操作语法
1. 显示数据库列表 show databases; # 查看当前所有数据库 show databases \G #以行的方式显示 2. 在命令行中,执行sql语句 mysql -e 'show ...
- 2-16 MySQL字段约束-索引-外键
一:字段修饰符 1:null和not null修饰符 我们通过这个例子来看看 mysql> create table worker(id int not null,name varchar(8) ...
- mysql字段约束-索引-外键---3
本节所讲内容: 字段修饰符 清空表记录 索引 外键 视图 一:字段修饰符 (约束) 1:null和not null修饰符 我们通过这个例子来看看 mysql> create table wo ...
- truncate表hang住(等待时间较长),出现enq:RO fast object reuse等待事件
有一个应用truncate表等待了一晚上,一个定时任务,跑了几年了,今天早上来发现昨晚没有执行完成,hang住了,查询发现等待事件 fast object reuse. 10.2.0.4的库 Bug ...
- 1.mysql表优化和避免索引失效原则
表优化 1.单表优化 建立索引 根据sql的实际解析顺序建立复合索引 最佳左前缀,保持索引的定义和使用顺序一致 2.多表优化 连接查询 小表驱动大表:对于双层循环来说,外层循环(数据量)越小,内层循环 ...
- SQL Server查询性能优化——堆表、碎片与索引(二)
本文是对 SQL Server查询性能优化——堆表.碎片与索引(一)的一些总结. 第一:先对 SQL Server查询性能优化——堆表.碎片与索引(一)中的例一的SET STATISTICS IO之 ...
- SQL 约束 索引
--约束constraint--not null 非空约束create table demo01(empno number(4),ename varchar2(10) not null,job var ...
- SQL Server -- 回忆笔记(二):增删改查,修改表结构,约束,关键字使用,函数,多表联合查询
SQL Server知识点回忆篇(二):增删改查,修改表结构,约束,关键字使用,函数,多表联合查询 1. insert 如果sql server设置的排序规则不是简体中文,必须在简体中文字符串前加N, ...
随机推荐
- ViewpageMaiActity
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android=&qu ...
- sh - 脚本学习 启动/停止/重启/部署jetty crontab
===============jettytest.sh ====================== #!/bin/shjettysh_path=/usr/local/jetty/bin/jetty. ...
- centos 7.x开放端口
1. 查看已打开的端口 # netstat -anp 2. 查看想开的端口是否已开 # firewall-cmd --query-port=666/tcp 若此提示 FirewallD is not ...
- 关于DDR3控制器的使用
关于DDR3控制器的使用 mig_7series_0 u_mig_7series_0 ( // Memory interface ports .ddr3_addr (ddr3_addr), // ou ...
- Python变量以及类型
变量的定义 在程序中,有时我们需要对2个数据进行求和,那么该怎样做呢? 大家类比一下现实生活中,比如去超市买东西,往往咱们需要一个菜篮子,用来进行存储物品,等到所有的物品都购买完成后,在收银台进行结账 ...
- python configparser使用
.ini文件由若干section(部分)组成, 而每一个section又由若干键值对组成. 以 example.ini为例: [DEFAULT] ServerAliveInterval = 45 Co ...
- PAT 乙级 1065 单身狗 (25 分)
1065 单身狗 (25 分) “单身狗”是中文对于单身人士的一种爱称.本题请你从上万人的大型派对中找出落单的客人,以便给予特殊关爱. 输入格式: 输入第一行给出一个正整数 N(≤ 50 000),是 ...
- Scrapy实战篇(三)之爬取豆瓣电影短评
今天的主要内容是爬取豆瓣电影短评,看一下网友是怎么评价最近的电影的,方便我们以后的分析,以以下三部电影:二十二,战狼,三生三世十里桃花为例. 由于豆瓣短评网页比较简单,且不存在动态加载的内容,我们下面 ...
- C++Primer第五版——习题答案详解(三)
习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第4章 表达式 练习4.10 while(cin>>i&&i ...
- 高性能mysql 第六章查询性能优化 总结(上)查询的执行过程
6 查询性能优化 6.1为什么查询会变慢 这里说明了的查询执行周期,从客户端到服务器端,服务器端解析,优化器生成执行计划,执行(可以细分,大体过程可以通过show profile查看),从服务器端返 ...