0
我有一個比較兩個不同數據庫之間表的結構的任務。如果有一個列丟失,我必須報告缺失的列和表。plsql比較兩個不同數據庫中表的結構
簡單的減號查詢不會返回。由於我對pl sql編程非常陌生,因此我沒有任何想法。
有人可以幫我這個嗎?
Table 1:
Columns
ABC
DEF
GHI
Table2:
ABC
DEF
GHI
JKL
這是一個附加列。如果必須報告,我該怎麼做。
PFB我簡單PROC:
所有的create or replace PROCEDURE PROC_EU_TABLE_COMPARE (
R_CURSOR OUT SYS_REFCURSOR,
SRC_SCHEMA_NAME IN VARCHAR2,
TGT_SCHEMA_NAME IN VARCHAR2
)
IS
CNT3 NUMBER;
SQL_TEXT3 VARCHAR2(4000);
BEGIN
--SRC_SCHEMA_NAME := UPPER(SRC_SCHEMA_NAME);
--TGT_SCHEMA_NAME := UPPER(TGT_SCHEMA_NAME);
SQL_TEXT3:='SELECT * FROM
((SELECT * FROM ALL_TAB_COLUMNS WHERE TABLE_NAME =''%EU%'' AND OWNER ='''||SRC_SCHEMA_NAME||'''
MINUS
SELECT * FROM ALL_TAB_COLUMNS WHERE TABLE_NAME LIKE ''%EU%''AND OWNER ='''||TGT_SCHEMA_NAME||''')
UNION
(SELECT * FROM ALL_TAB_COLUMNS WHERE TABLE_NAME LIKE ''%EU%''AND OWNER ='''||TGT_SCHEMA_NAME||'''
MINUS
SELECT * FROM ALL_TAB_COLUMNS WHERE TABLE_NAME =''%EU%'' AND OWNER ='''||SRC_SCHEMA_NAME||'''))';
EXECUTE IMMEDIATE SQL_TEXT3 INTO CNT3;
DBMS_OUTPUT.PUT_LINE(CNT3);
END;
有很多選項沒有寫你自己的代碼。例如,SQL Developer比較模式對象。 http://www.dba-oracle.com/t_compare_schemas.htm – Rene