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存储过程示例子-表的行数对比的更多相关文章

  1. 【SQL】统计所有表的行数

    环境:mssql ent 2k8 r2 原理:遍历所有用户表,用sp_spaceused过程分别获取每张表的行数并写入临时表,最后返回临时表 IF OBJECT_ID('tempdb..#TableR ...

  2. 查看SqlAzure和SQLServer中的每个表数据行数

    SqlAzure中的方式: select t.name ,s.row_count from sys.tables t join sys.dm_db_partition_stats s ON t.obj ...

  3. sqlserver查询所有表的行数的sql语句

    原文:sqlserver查询所有表的行数的sql语句 select object_name(id),rowcnt from sysindexes where indid<2 and object ...

  4. 查询sql server 2008所有表和行数

    查询sql server 2008所有表和行数 SELECT a.name, b.rows FROM sysobjects AS a INNER JOIN sysindexes AS b ON a.i ...

  5. SQL Server遍历所有表统计行数

    DECLARE CountTableRecords CURSOR READ_ONLY FOR SELECT sst.name, Schema_name(sst.schema_id) FROM sys. ...

  6. 统计sql server 2012表的行数

    --功能:统计sql server 2012表的行数 SELECT a.name, a.object_id, b.rows, b.index_id FROM sys.tables AS a INNER ...

  7. 「日志」Navicat统计的行数竟然和表实际行数不一致

    背景 近期为了保障线上数据库的稳定性,我决定针对一些大表的历史数据有计划地进行备份迁移,但是呢,发现一个奇特的现象,Navicat统计行数和表自身count统计数竟然不一致!?0.0 Navicat ...

  8. Oracle 表的行数、表占用空间大小,列的非空行数、列占用空间大小 查询

    --表名,表占用空间大小(MB),行数select table_name, round(num_rows * avg_row_len /1024/1024, 8) as total_len, num_ ...

  9. SQL SERVER 中 实现主表1行记录,子表多行记录 整合成一条虚拟列

    表中有这样的记录,简单的主子表,现要想通过left join 语句把两表关联起来 select * from tbl_diary_reback a left join tbl_diary_reback ...

随机推荐

  1. 双向最大匹配算法——基于词典规则的中文分词(Java实现)

    目录 一.中文分词理论描述 二.算法描述 1.正向最大匹配算法 2.反向最大匹配算法 3.双剑合璧 三.案例描述 四.JAVA实现完整代码 五.组装UI 六.总结 前言 这篇将使用Java实现基于规则 ...

  2. Oracle 11gR2-Win 64bit

    版本:Oracle 11gR2下载地址:http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.ht ...

  3. Python练习题 040:Project Euler 012:有超过500个因子的三角形数

    本题来自 Project Euler 第12题:https://projecteuler.net/problem=12 # Project Euler: Problem 12: Highly divi ...

  4. USB虚拟串口 使用基于stm32的RT-Thread

    参考我的RT Thread论坛文章 https://www.rt-thread.org/qa/thread-422644-1-1.html

  5. 056 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 03 一维数组的应用

    056 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 03 一维数组的应用 本文知识点:数组的实际应用 程序开发中如何应用数组? 程序代码及其运行结果: 不同数据类 ...

  6. K8S环境的Jenkin性能问题处理续篇(任务Pod设置)

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos K8S环境的Jenkin性能问题处理 本文是<K ...

  7. 搭建ipse隧道

    我没有太多的物理服务器,实验环境只能用四台装了linux的虚拟机来模拟,用户层工具是openswan.大致拓扑如下(我有点懒,公网地址我用的194.168.10.0/24,别和192.168.xx.x ...

  8. 【python】python返回结果多了none(递归时)

    把每个返回值的print使用return替代即可 例子: def trim(s): if s[:1]==" ": s=s[1:] retrim(s) elif s[-1:]==&q ...

  9. File、Blob、ArrayBuffer等文件类的对象有什么区别和联系

    前言 在前端中处理文件时会经常遇到File.Blob.ArrayBuffer以及相关的处理方法或方式如FileReader.FormData等等这些名词,对于这些常见而又不常见的名词,我相信大多数人对 ...

  10. spring boot:swagger3的安全配置(swagger 3.0.0 / spring security / spring boot 2.3.3)

    一,swagger有哪些环节需要注意安全? 1,生产环境中,要关闭swagger application.properties中配置: springfox.documentation.swagger- ...