步驟一:
declare
i number;
s varchar(50);
s_YXRAW varchar(50);
begin
select user into s_YXRAW from dual;
if s_YXRAW <> 'YXRAW' then return; end if;
s:= 'PBP_QX'; -- 要導入的用戶
-- 賦權限-----------賦權限必須在YXRAW用戶下執行
--dbms_output.put_line('grant select, references, index on REC_TRADE to '|| s || ';'); -- 交易流水錶
--dbms_output.put_line( 'grant EXECUTE on YXRAW.YXRAW_COMMON to '|| s ||';'); -- YXRAW通用包
for i in (select table_name from user_tables where table_name not in ('BAS_SYSTEM_INFO','BAS_PAGE','USR_USER','BAS_SYSTEM_INFO','BAS_REPORT') order by table_name)
loop
dbms_output.put_line('grant select, insert, update, delete, references, alter, index on '|| i.table_name ||' to '|| s || ';');
end loop;
-- 其他
/*
dbms_output.put_line( 'declare');
dbms_output.put_line( 's_YXRAW varchar(50);');
dbms_output.put_line( 'begin');
dbms_output.put_line( 'select user into s_YXRAW from dual;');
dbms_output.put_line( 'if s_YXRAW = ''YXRAW'' then return; end if;');
*/
-- 刪除表、創建同義詞,切不可在YXRAW用戶下執行
-- 刪除同名表
/*for i in (select table_name from user_tables)
loop
dbms_output.put_line('DROP TABLE '|| i.table_name ||' CASCADE CONSTRAINTS; ');
end loop;*/
-- 創建同義詞
--dbms_output.put_line( 'CREATE OR REPLACE EDITIONABLE SYNONYM "'|| s ||'"."YXRAW_COMMON" FOR "'|| s_YXRAW ||'"."YXRAW_COMMON";');
--dbms_output.put_line( 'CREATE OR REPLACE EDITIONABLE SYNONYM "'|| s ||'"."REC_TRADE" FOR "'|| s_YXRAW ||'"."REC_TRADE";');
for i in (select table_name from user_tables where table_name not in ('BAS_SYSTEM_INFO','BAS_PAGE','USR_USER','BAS_SYSTEM_INFO','BAS_REPORT') order by table_name)
loop
dbms_output.put_line('CREATE OR REPLACE EDITIONABLE SYNONYM "'|| s ||'"."'|| i.table_name ||'" FOR "'|| s_YXRAW ||'"."'|| i.table_name ||'";');
end loop;
-- dbms_output.put_line( 'end;');
-- grant select, insert, update, delete, references, alter, index on RPT_ACCOUNT_CATEGORY to PAM
end;
步驟二:
在YXRAW庫(賦值庫)中執行上半部分語句,在PBP_QX(被賦同義詞庫)執行下半部分語句: