added new procedure to remove parties and associated records from the DB.
git-svn-id: http://locode01.ad.dom/svn/WEBMIP/trunk@3165 248e525c-4dfb-0310-94bc-949c084e9493
This commit is contained in:
@@ -180,6 +180,15 @@ CREATE OR REPLACE PACKAGE mip_parties AS
|
|||||||
p_addr_code IN addresses.code%TYPE,
|
p_addr_code IN addresses.code%TYPE,
|
||||||
p_paddr_type IN party_address_roles.rt_code%TYPE);
|
p_paddr_type IN party_address_roles.rt_code%TYPE);
|
||||||
--
|
--
|
||||||
|
|
||||||
|
/**
|
||||||
|
REMOVE_PARTY
|
||||||
|
removes the party and all related information from the system.
|
||||||
|
|
||||||
|
%param p_prty_id - the ID of the party to remove.
|
||||||
|
*/
|
||||||
|
PROCEDURE remove_party(p_prty_id IN NUMBER);
|
||||||
|
--
|
||||||
END mip_parties;
|
END mip_parties;
|
||||||
/
|
/
|
||||||
CREATE OR REPLACE PACKAGE BODY mip_parties AS
|
CREATE OR REPLACE PACKAGE BODY mip_parties AS
|
||||||
@@ -892,5 +901,68 @@ CREATE OR REPLACE PACKAGE BODY mip_parties AS
|
|||||||
WHERE paddr_roles.rt_code = p_paddr_type);
|
WHERE paddr_roles.rt_code = p_paddr_type);
|
||||||
|
|
||||||
END expire_old_addresses;
|
END expire_old_addresses;
|
||||||
|
--
|
||||||
|
|
||||||
|
/**
|
||||||
|
REMOVE_PARTY
|
||||||
|
removes the party and all related information from the system.
|
||||||
|
|
||||||
|
%param p_prty_id - the ID of the party to remove.
|
||||||
|
*/
|
||||||
|
PROCEDURE remove_party(p_prty_id IN NUMBER) IS
|
||||||
|
BEGIN
|
||||||
|
--delete all party relationships with other parties
|
||||||
|
DELETE FROM party_relationships parl
|
||||||
|
WHERE parl.from_parl_prty_id = p_prty_id;
|
||||||
|
|
||||||
|
DELETE FROM party_relationships parl
|
||||||
|
WHERE parl.to_parl_prty_id = p_prty_id;
|
||||||
|
|
||||||
|
--delete contact mechanisms
|
||||||
|
FOR cur_come IN (SELECT * FROM party_contact_mechanisms come WHERE come.prty_id = p_prty_id) LOOP
|
||||||
|
|
||||||
|
--delete the party/contact mechanism link
|
||||||
|
DELETE FROM party_contact_mechanisms come
|
||||||
|
WHERE come.prty_id = p_prty_id
|
||||||
|
AND come.come_id = cur_come.come_id;
|
||||||
|
|
||||||
|
-- delete the contact mechanism
|
||||||
|
DELETE FROM contact_mechanisms come
|
||||||
|
WHERE come.id = cur_come.come_id;
|
||||||
|
END LOOP;
|
||||||
|
|
||||||
|
--delete addresses
|
||||||
|
FOR cur_addr IN (SELECT * FROM party_addresses paddr WHERE paddr.prty_id = p_prty_id) LOOP
|
||||||
|
--delete the address roles
|
||||||
|
DELETE FROM party_address_roles paddr_role
|
||||||
|
WHERE paddr_role.paddr_prty_id = p_prty_id;
|
||||||
|
|
||||||
|
--delete the party address links
|
||||||
|
DELETE FROM party_addresses paddr
|
||||||
|
WHERE paddr.prty_id = p_prty_id
|
||||||
|
AND paddr.addr_code = cur_addr.addr_code;
|
||||||
|
|
||||||
|
END LOOP;
|
||||||
|
|
||||||
|
-- remove the passwords
|
||||||
|
DELETE FROM passwords pword
|
||||||
|
WHERE prty_id = p_prty_id;
|
||||||
|
|
||||||
|
-- remove the party roles
|
||||||
|
DELETE FROM party_roles parl
|
||||||
|
WHERE parl.prty_id = p_prty_id;
|
||||||
|
|
||||||
|
-- finally, delete the party
|
||||||
|
DELETE FROM parties prty
|
||||||
|
WHERE prty.id = p_prty_id;
|
||||||
|
|
||||||
|
-- commit the deletes
|
||||||
|
COMMIT;
|
||||||
|
-- if we have any problems then rollback
|
||||||
|
EXCEPTION
|
||||||
|
WHEN OTHERS THEN
|
||||||
|
ROLLBACK;
|
||||||
|
RAISE;
|
||||||
|
END remove_party;
|
||||||
END mip_parties;
|
END mip_parties;
|
||||||
/
|
/
|
||||||
|
|||||||
Reference in New Issue
Block a user