У меня есть задача сравнить структуру таблиц между двумя различными базами данных. Если отсутствует столбец, я должен сообщить о недостающем столбце и его таблицах.plsql сравнение структуры таблиц в 2 разных базе данных
Простой минус запрос не возвращается. Поскольку я очень новичок в программировании pl sql, у меня нет идей.
Может кто-нибудь, пожалуйста, помогите мне с этим?
Table 1:
Columns
ABC
DEF
GHI
Table2:
ABC
DEF
GHI
JKL
Дополнительная колонка. Если это нужно сообщить, как мне это сделать.
PFB мой простой прок:
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