17,086
社区成员
发帖
与我相关
我的任务
分享
create or replace procedure COPYGROUP1
(CopyMB_Name in varchar2,CopyGP_Name in varchar2,ToMB_Name in varchar2,a integer)
is
CopyGPID varchar2(200);
CopyMBID varchar2(200);
CopyColumn varchar2(500);
Copygpp_propid varchar(50);
ToMBID varchar2(200);
ToPropID varchar2(200);
ToColumn varchar2(200);
ToGPID varchar2(50);
Toprop_name varchar(2000);
d_qty integer;
d_qty1 integer;
Togiid varchar(50);
Toginame varchar(500);
Togides varchar(2000);
cursor cursor_gpp_propid is select gpp_propid from dps_groupproperty where mb_id = CopyMBID and gp_id = CopyGPID;
cursor cursor_mb_id is select mb_id from dps_mainbody where mb_id <> CopyMBID and mb_id in (select mb_id from dps_group where gp_name =CopyGP_Name);
cursor cursor_gi_id is select gi_id,gi_name,gi_describe from dps_groupitem where mb_id = CopyMBID and gp_id = CopyGPID order by gi_id;
begin
--查询要复制的对象ID
select mb_id into CopyMBID from dps_mainbody where mb_name = CopyMB_Name;
--查询要复制的分组ID
select gp_id into CopyGPID from dps_group where mb_id = CopyMBID and gp_name = CopyGP_Name;
--一个对象插入一个分组
if a = 1 then
--查询复制到的对象ID
select mb_id into ToMBID from dps_mainbody where mb_name = ToMB_Name;
--判断复制到的分组ID是否存在,并查出
select count(gp_id) into d_qty from dps_group where mb_id = ToMBID and gp_name = CopyGP_Name;
if d_qty = 0 then
select max(gp_id)+1 into ToGPID from dps_group;
insert into dps_group values(1,1,ToMBID,ToGPID,CopyGP_Name,'系统管理员',sysdate,'系统管理员',sysdate);
commit;
end if;
select gp_id into ToGPID from dps_group where mb_id = ToMBID and gp_name = CopyGP_Name;
delete from dps_groupitem where mb_id = ToMBID and gp_id = ToGPID;
open cursor_gi_id;
loop
fetch cursor_gi_id into Togiid,Toginame,Togides;
exit when cursor_gi_id%notfound;
insert into dps_groupitem values(1,1,ToMBID,ToGPID,Togiid,Toginame,Togides,'系统管理员',sysdate,'系统管理员',sysdate);
commit;
end loop;
close cursor_gi_id;
/*insert into dps_groupitem
select 1,1,ToMBID,ToGPID,GI_ID,gi_name,gi_describe,gi_creator,sysdate,gi_creator,sysdate from dps_groupitem
where mb_id = CopyMBID and gp_id = CopyGPID;
commit;*/
--查询复制的条件字段
open cursor_gpp_propid;
loop
fetch cursor_gpp_propid into Copygpp_propid;
exit when cursor_gpp_propid%notfound;
select prop_name,prop_columnname into Toprop_name,CopyColumn from dps_property where mb_id = CopyMBID and prop_id = Copygpp_propid;
select prop_columnname,prop_id into ToColumn,ToPropID from dps_property where mb_id = ToMBID and prop_name = Toprop_name;
select count(*) qty into d_qty1 from dps_groupproperty where mb_id = ToMBID and gp_id = ToGPID and gpp_propid = ToPropID;
if d_qty1 = 0 then
insert into dps_groupproperty values(1,1,ToMBID,ToGPID,ToPropID);
commit;
end if;
update dps_groupitem set gi_describe = replace(gi_describe,CopyColumn,ToColumn) where mb_id = ToMBID and gp_id = ToGPID;
commit;
end loop;
close cursor_gpp_propid;
end if;
--所有对象插入一个分组
if a = 2 then
open cursor_mb_id;
loop
fetch cursor_mb_id into ToMBID;
exit when cursor_mb_id%notfound;
select count(gp_id) into d_qty from dps_group where mb_id = ToMBID and gp_name = CopyGP_Name;
if d_qty = 0 then
select max(gp_id)+1 into ToGPID from dps_group;
insert into dps_group values(1,1,ToMBID,ToGPID,CopyGP_Name,'系统管理员',sysdate,'系统管理员',sysdate);
commit;
end if;
select gp_id into ToGPID from dps_group where mb_id = ToMBID and gp_name = CopyGP_Name;
delete from dps_groupitem where mb_id = ToMBID and gp_id = ToGPID;
open cursor_gi_id;
loop
fetch cursor_gi_id into Togiid,Toginame,Togides;
exit when cursor_gi_id%notfound;
insert into dps_groupitem values(1,1,ToMBID,ToGPID,Togiid,Toginame,Togides,'系统管理员',sysdate,'系统管理员',sysdate);
commit;
end loop;
close cursor_gi_id;
/*insert into dps_groupitem
select 1,1,ToMBID,ToGPID,GI_ID,gi_name,gi_describe,gi_creator,sysdate,gi_creator,sysdate from dps_groupitem
where mb_id = CopyMBID and gp_id = CopyGPID;
commit;*/
--查询复制的条件字段
open cursor_gpp_propid;
loop
fetch cursor_gpp_propid into Copygpp_propid;
exit when cursor_gpp_propid%notfound;
select prop_name,prop_columnname into Toprop_name,CopyColumn from dps_property where mb_id = CopyMBID and prop_id = Copygpp_propid;
select prop_columnname,prop_id into ToColumn,ToPropID from dps_property where mb_id = ToMBID and prop_name = Toprop_name;
select count(*) qty into d_qty1 from dps_groupproperty where mb_id = ToMBID and gp_id = ToGPID and gpp_propid = ToPropID;
if d_qty1 = 0 then
insert into dps_groupproperty values(1,1,ToMBID,ToGPID,ToPropID);
commit;
end if;
update dps_groupitem set gi_describe = replace(gi_describe,CopyColumn,ToColumn) where mb_id = ToMBID and gp_id = ToGPID;
commit;
end loop;
close cursor_gpp_propid;
end loop;
close cursor_mb_id;
end if;
end;