步骤一:
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(被赋同义词库)执行下半部分语句: