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. CentOS7 【linux系统】配置 JDK 教程

    1. 下载 [linux版本] JDK 1.8 的包. 2. 导入linux系统里面. 如何导入,下载一个winSCP 软件 破解安装,然后再linux 系统里面 查询IP,连接即可. 在linux解 ...

  2. Appium的一些问题的总结答案

        问题 1. error: Failed to start an Appium session, err was: Error: Requested a new session but one ...

  3. mysql-4-functions

    #进阶4:常见函数(单行函数) /* 将一组逻辑语句封装在方法体中,对外暴露方法名 语法: SELECT 函数名() [FROM 表名] 分类: 1.单行函数:concat,length,ifnull ...

  4. Layman PHP+JavaScript 实现图片无刷新上传

    html文件代码 <!-- ajax文件上传开始 --> <script type="text/javascript" src="/imageuploa ...

  5. 更改MySQL 5.7的数据库的存储位置

    操作系统:Windows 10 x64 MySQL安装包版本:mysql-installer-community-5.7.17.0 参考:MySQL 5.7版本的安装使用详细教程+更改数据库data的 ...

  6. Hive理论基础

    数仓特征:面向主题,集成,非易失的,时变.数据仓库是在数据库已经大量存在的情况下,为了进一步挖掘数据资源.为了决策需要而产生的,不是所谓的"大型数据库".   数据库与数据仓库的区 ...

  7. 多测师讲解requests __介绍_高级讲师肖sir

    我们今天讲解的内容 一.什么是Requests? Requests是用Python语言编写的简单易用的HTTP库,用来做接口测试的库. 二.安装requests库 1.按住Windows标志+r,在运 ...

  8. 多测师讲解seleniun_ ACTIONCHAUNS定位_高级讲师肖sir

    1.传统方法定位 2.模拟鼠标定位

  9. 请求https接口时报错:Caused by SSLError(SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificat,安装certifi

    如何解决SSL 根证书验错误: 一种解决方法是:verify=False 在session.request 里面: session.post(post_url,data=post_data,heade ...

  10. 【C语言】这种求结构体成员大小的方法,你可能需要了解一下~

    在C语言编程中,有时候需要知道某结构体中某成员的大小,比如使用堆内存来存储结构体中的某成员时,需要知道该成员的大小,才好确定所需申请的空间大小.求某结构体中某成员的大小,你会怎么做? 例子: type ...