判斷彙總庫與地市庫程式碼是否一致
--在儲存過程執行的使用者下,新建三個表
--建表程式碼
create table tab_name
(table_name varchar2(20));
create table remark
(
db_name varchar2(20),
table_name varchar2(20),
num number(5)
);
create table dif_result
(
db_name varchar2(20),
table_name varchar2(20),
id varchar2(100),
name varchar2(500)
);
--tab_name存放程式碼表的名稱,先執行獲取表名稱的語句,
insert into tab_name
select table_name from dba_tables where wner='彙總庫使用者名稱';
--remark存放核對的結果;如果結果為-1,表示僅在彙總庫中存在;
--dif_result中存放的是不同的結果
CREATE OR REPLACE PROCEDURE "DATACODE" (MYARG IN varchar2)
IS
v_num number(5);
cursor cur_table is select table_name from tab_name;
cursor cur_result is select db_name,table_name,num from remark;
v_tablename varchar2(20);
v_count number(5);
v_count1 number(5);
v_sql varchar2(400);
v_db_name varchar2(20);
v_table_name varchar2(20);
v_num1 number(5);
no_table exception;
pragma exception_init(no_table,-00942);
begin
select count(*) into v_count from tab_name;
open cur_table;
fetch cur_table into v_tablename;
for i in 1..v_count loop
v_sql :='select count(1) from ('||
'(select id,name from hzcode.'|| v_tablename
||' minus '
||'select id,name from ' || MYARG ||'.'|| v_tablename
|| ')'
||'union'
||'(select id,name from ' || MYARG ||'.'||v_tablename
||' minus '
||'select id,name from hzcode.'||v_tablename
|| ')'
|| ')';
begin
execute immediate v_sql into v_num;
insert into remark values(MYARG,v_tablename,v_num);
commit;
exception
when no_table then
insert into remark values(MYARG,v_tablename,-1);
commit;
end;
fetch cur_table into v_tablename;
end loop;
close cur_table;
delete from remark where num=0;
commit;
select count(*) into v_count1 from remark;
open cur_result;
fetch cur_result into v_db_name,v_table_name,v_num1;
for i in 1..v_count1 loop
v_sql :='insert into dif_result(id,name) select id,name from( '||
'(select id,name from hzcode.'|| v_table_name
||' minus '
||'select id,name from ' || v_db_name ||'.'|| v_table_name
|| ')'
||'union'
||'(select id,name from ' || v_db_name ||'.'||v_table_name
||' minus '
||'select id,name from hzcode.'||v_table_name
|| ')'
|| ')';
begin
execute immediate v_sql;
update dif_result set db_name=v_db_name where db_name is null;
update dif_result set table_name=v_table_name where table_name is null;
commit;
exception
when no_table then
insert into dif_result values(v_db_name,v_table_name,'僅彙總庫有','僅彙總庫有');
commit;
end;
fetch cur_result into v_db_name,v_table_name,v_num1;
end loop;
close cur_result;
end;
/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28803801/viewspace-768149/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 判斷objectStore物件倉庫是否存在Object物件
- java判斷mysql中資料庫是否存在JavaMySql資料庫
- javascript判斷是否是觸屏程式碼JavaScript
- 判斷資料庫是否需要例項恢復資料庫
- 判斷字串中是否包含Emoji表情程式碼字串
- Sql Server中判斷表或者資料庫是否存在SQLServer資料庫
- js判斷時間格式是否正確程式碼JS
- js判斷元素是否為空程式碼例項JS
- js判斷是否是IE瀏覽器程式碼JS瀏覽器
- Android程式碼判斷手機是否已rootAndroid
- 判斷一個數是否為質數(程式碼)
- js判斷文字框是否為空程式碼例項JS
- javascript判斷物件是否為空物件程式碼例項JavaScript物件
- 判斷手機是否安裝app的javascript程式碼APPJavaScript
- js判斷螢幕是否旋轉程式碼例項JS
- golang中判斷兩個slice是否相等與判斷值下的 陣列是否相等Golang陣列
- 判斷物件是否相等的方法,==與 isEqual物件
- sh指令碼判斷路徑是否存在指令碼
- jquery判斷滾動是否到達底部程式碼例項jQuery
- javascript判斷變數是否是數值型別程式碼JavaScript變數型別
- js判斷指定的值是否為整數的程式碼JS
- 判斷url連結地址是否合法的例項程式碼
- QTP中如何判斷Excel程式是否存在?QTExcel
- 判斷當前程式是否正在執行
- 判斷是否為陣列的 JavaScript 方法總結陣列JavaScript
- 登入判斷使用者名稱和密碼是否正確的程式碼(連結和讀取資料庫)密碼資料庫
- C++庫彙總C++
- js實現的判斷是否是閏年程式碼例項JS
- js判斷陣列中是否含有指定元素程式碼例項JS陣列
- 判斷是否是移動裝置訪問網站程式碼網站
- jquery判斷<img>圖片是否載入完成程式碼例項jQuery
- PHP判斷一個字串是否包含亂碼PHP字串
- 如何判斷網校原始碼是否值得使用?原始碼
- Windows下bat指令碼判斷埠是否可用WindowsBAT指令碼
- Sql Server判斷資料庫、表、儲存過程、函式是否存在SQLServer資料庫儲存過程函式
- Python科研武器庫 - 檔案/路徑操作 - 判斷路徑是否存在Python
- Linux庫共享檔案的查詢與判斷Linux
- 判斷字串是否為空字串