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