0
私は2つの異なるデータベース間でテーブルの構造を比較するタスクを持っています。列が見つからない場合は、不足している列とそのテーブルを報告する必要があります。2つの異なるデータベースのテーブルの構造を比較するplsql
単純なマイナスクエリは返されません。私は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