DM存储过程示例子-表的行数对比
1.DM存储过程示例子,表的行数对比
1 --1. ================全量
2 --select * from DM_VERI where c2 != c3;
3 --drop table DM_VERI;
4 --create table DM_VERI(c1 varchar(100) PRIMARY KEY, c2 int, c3 int);
5 --truncate table DM_VERI;
6
7 --1.1
8 CREATE OR REPLACE PROCEDURE proc_veri(v_user IN VARCHAR2)
9 AS
10 v_table varchar(40);
11 v_count number;
12 v_count2 number;
13 v_sql VARCHAR(1024);
14 v_sql2 VARCHAR(1024);
15 c1 CURSOR;
16 BEGIN
17 OPEN c1 FOR SELECT TABLE_NAME FROM dba_tables t where t.OWNER=v_user;
18 LOOP
19 FETCH c1 INTO v_table;
20
21 --1.dm
22 v_sql:='select COUNT(*) from' || v_table;
23 execute immediate v_sql into v_count;
24
25 --2.ora
26 --v_sql2:='select COUNT(*) from' || v_table||'@link01';
27 v_sql2:='select COUNT(*) from' || v_table;
28 execute immediate v_sql2 into v_count2;
29
30
31 insert into DM_VERI values (v_table, v_count, v_count2);
32
33 PRINT v_table || v_count||v_count2;
34 --PRINT v_count;
35
36 EXIT WHEN c1%NOTFOUND;
37
38 END LOOP;
39 CLOSE c1;
40 END;
41
42 --1.2
43 --call proc_veri('SYSDBA');
44
45
46 --======================================================================
47 --2. 分布sql
48 --2.1 ora
49 --select * from TEST_V_ORA where c2 != c3;
50 --drop table TEST_V_ORA;
51 --create table TEST_V_ORA(c1 varchar(100), c2 int);
52 --truncate table TEST_V_ORA;
53 CREATE OR REPLACE PROCEDURE proc_v_ora(v_user IN VARCHAR)
54 AS
55 v_table varchar(40);
56 v_count2 number;
57 v_sql2 VARCHAR(1024);
58 c1 CURSOR;
59 BEGIN
60 OPEN c1 FOR SELECT TABLE_NAME FROM dba_tables t where t.OWNER=v_user;
61 LOOP
62 FETCH c1 INTO v_table;
63
64 --2.ora
65 --v_sql2:='select COUNT(*) from' || v_table||'@link01';
66 v_sql2:='select COUNT(*) from' || v_table;
67 execute immediate v_sql2 into v_count2;
68
69
70 insert into TEST_V_ORA(c1,c3) values (v_table, v_count2);
71
72 PRINT v_table || v_count2;
73
74 EXIT WHEN c1%NOTFOUND;
75
76 END LOOP;
77 CLOSE c1;
78 commit;
79 END;
80
81 truncate table DM_VERI;
82
83 call proc_veri_ora('SYSDBA');
84
85 select * from DM_VERI;
86
87
88 --2.2 dm
89 --select * from TEST_V_DM where c2 != c3;
90 --drop table TEST_V_DM;
91 --create table TEST_V_DM(c1 varchar(100), c2 int);
92 --truncate table TEST_V_DM;
93 CREATE OR REPLACE PROCEDURE proc_v_dm(v_user IN VARCHAR)
94 AS
95 v_table varchar(40);
96 v_count number;
97 v_sql VARCHAR(1024);
98 c1 CURSOR;
99 BEGIN
100 OPEN c1 FOR SELECT TABLE_NAME FROM dba_tables t where t.OWNER=v_user;
101 LOOP
102 FETCH c1 INTO v_table;
103
104 --1.dm
105 v_sql:='select COUNT(*) from' || v_table;
106 execute immediate v_sql into v_count;
107
108
109 update TEST_V_DM set c2=v_count where c1=v_table;
110
111 PRINT v_table || v_count;
112
113 EXIT WHEN c1%NOTFOUND;
114
115 END LOOP;
116 CLOSE c1;
117 commit;
118 END;
119
120
121 call proc_v_dm('SYSDBA');
122
123 select * from TEST_V_DM;
124
125
126 ------==========================ORA 数据对比==============================
127
128 select 'select count(*) cnt,'''||TABLE_NAME||'''from ' || TABLE_NAME||' union all ' from (
129 select TABLE_NAME from DBA_TABLES
130 where OWNER like 'SYSDBA' AND TABLE_NAME NOT LIKE '##%' order by TABLE_NAME);
DM存储过程示例子-表的行数对比的更多相关文章
- 【SQL】统计所有表的行数
环境:mssql ent 2k8 r2 原理:遍历所有用户表,用sp_spaceused过程分别获取每张表的行数并写入临时表,最后返回临时表 IF OBJECT_ID('tempdb..#TableR ...
- 查看SqlAzure和SQLServer中的每个表数据行数
SqlAzure中的方式: select t.name ,s.row_count from sys.tables t join sys.dm_db_partition_stats s ON t.obj ...
- sqlserver查询所有表的行数的sql语句
原文:sqlserver查询所有表的行数的sql语句 select object_name(id),rowcnt from sysindexes where indid<2 and object ...
- 查询sql server 2008所有表和行数
查询sql server 2008所有表和行数 SELECT a.name, b.rows FROM sysobjects AS a INNER JOIN sysindexes AS b ON a.i ...
- SQL Server遍历所有表统计行数
DECLARE CountTableRecords CURSOR READ_ONLY FOR SELECT sst.name, Schema_name(sst.schema_id) FROM sys. ...
- 统计sql server 2012表的行数
--功能:统计sql server 2012表的行数 SELECT a.name, a.object_id, b.rows, b.index_id FROM sys.tables AS a INNER ...
- 「日志」Navicat统计的行数竟然和表实际行数不一致
背景 近期为了保障线上数据库的稳定性,我决定针对一些大表的历史数据有计划地进行备份迁移,但是呢,发现一个奇特的现象,Navicat统计行数和表自身count统计数竟然不一致!?0.0 Navicat ...
- Oracle 表的行数、表占用空间大小,列的非空行数、列占用空间大小 查询
--表名,表占用空间大小(MB),行数select table_name, round(num_rows * avg_row_len /1024/1024, 8) as total_len, num_ ...
- SQL SERVER 中 实现主表1行记录,子表多行记录 整合成一条虚拟列
表中有这样的记录,简单的主子表,现要想通过left join 语句把两表关联起来 select * from tbl_diary_reback a left join tbl_diary_reback ...
随机推荐
- Spring学习(五)--Spring的IOC
1.BeanDefinition在IOC的注册 当BeanDefinition完成载入和解析之后,用户定义的BeanDefinition在IOC容器中已经建立自己的数据结构和数据表示,但是无法使用,需 ...
- Onethink 前台编辑器调用
比较偷懒的调用方式 <textarea name="content"></textarea> {:hook('documentEditFormContent ...
- 065 01 Android 零基础入门 01 Java基础语法 08 Java方法 02 带参无返回值方法
065 01 Android 零基础入门 01 Java基础语法 08 Java方法 03 带参无返回值方法 本文知识点:带参无返回值方法 说明:因为时间紧张,本人写博客过程中只是对知识点的关键步骤进 ...
- Arduino 串口的一些高级用法
来源: 1.配置串口通信数据位.校验位.停止位 通常我们使用Serial.begin(speed)来完成串口的初始化,这种方式,只能配置串口的波特率. 而使用Serial.begin(speed, c ...
- LPCTSTR的含义
LPCTSTR: LP代表指针.C代表不可改变.T代表根据是否定义UNICODE宏而分别define为char或wchar_t.STR代表字符串. 例如: LPCTSTR lp="BMP F ...
- python对文件操作 r w a 文件复制/修改
文件操作简介: 使用python来读写文件是非常简单的操作.我们使用 open() 函数来打开一个文件,获取到文件句柄.然后 通过文件句柄就可以进行各种各样的操作了.根据打开⽅方式的不同能够执行的操作 ...
- 活字格外联数据库SQLServer和Mysql的经验(大多数经验也适合其它使用外联数据库的平台)
来自学习和实操后的总结,有说得不对的,或者遗漏的,大家留言补充.希望这个贴子,能成为活字格老铁们使用外联库的一个指南.PS即使你不打算使用外联库,里面的一些方法,也值得看一看! 一.库表规划1.系统表 ...
- 阿里云服务器安装mongodb并且启动
// 1.下载 我是直接在local里面创一个mongodb文件夹进行下载和解压 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_ ...
- 版本控制系统之git
一.简介 git是Linux内核项目发起者linus用C语言写的,主要用来做项目的版本控制追踪:git是无中心节点的分布式版本控制系统,也是目前很流行的版本控制系统:其安装简单,使用简单:相比传统的c ...
- webfunny前端监控开源项目
前言介绍 如果你是一位前端工程师,那你一定不止一次去解决一些顽固的线上问题,你也曾想方设法复现用户的bug,结果可能都不太理想. 怎样定位前端线上问题,一直以来,都是很头疼的问题,因为它发生于用户的一 ...