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. PyCharm-缩进 格式化代码

    格式化代码 Ctrl + Alt + l 缩进代码 Tab    向右缩进4格 Shift + Tab 向左缩进4格

  2. Centos-shell-简介

    shell 壳 1. 用户在操作系统上完成的所有任务都是通过shell与linux内核的交互实现的, 是用户和操作系统内核之间的通信桥梁 用户操作任务 <__> shell <__& ...

  3. 02 sublime text3下配置Python的编译运行环境

    内容参考如下文章,加入了自己的干货: https://www.cnblogs.com/huluwahaha/p/7503930.html 在sublime中如何配置Python的编译环境呢? 打开Su ...

  4. matlab中subplot 在平铺位置创建坐标区

    来源:https://ww2.mathworks.cn/help/matlab/ref/subplot.html?searchHighlight=subplot&s_tid=doc_srcht ...

  5. npm包管理器报错-npm ERR! Response timeout while trying to fetch https://registry.npmjs.org/@XXX(over 30000ms)

    由于这两天买的新电脑在短期内频频蓝屏.卡机,不得不把自己其他的本本拿出来换上,但是程序员换电脑是真的痛苦,其他不说就说一个配环境 真的折腾哈 我是一名前端菜鸟,现在自己的本本上使用的是npm包管理工具 ...

  6. golang常用库:配置文件解析库-viper使用

    一.viper简介 viper 配置解析库,是由大神 Steve Francia 开发,他在google领导着 golang 的产品开发,他也是 gohugo.io 的创始人之一,命令行解析库 cob ...

  7. MySQL 日志详解

    一.MySQL 日志分类 MySQL 日志主要包含:错误日志.查询日志.慢查询日志.事务日志.二进制日志. 错误日志: -log-err (记录启动.运行.停止 MySQL 服务时出现的信息) 查询日 ...

  8. 如何获取value值,获取属性值,设置属性值,

    1.获取select下拉框的value值,   2.获取select  的tid值 3.设置属性值  4.判断哪个单选框选中了 prop好像是判断的意思吧,个人理解勿喷谢谢!!!!!!

  9. 深入理解Logger日志——框架绑定原理

    深入理解Logger日志--框架绑定原理 说到Logger日志的动态绑定,主要归功与Slf4j,在之前的文章也说过,Slf4j是类似于Apache Common-Logging,英文为Simple L ...

  10. 发布MeteoInfo 1.2.8

    增加了对SYNOP数据的支持(功能从C#版移植过来).数据可以从这里下载:http://weather.cod.edu/digatmos/syn/SYNOP数据搞气象的人应该多少知道些,类似MICAP ...