У меня есть коллекция sysid, которые я использую для итерации в нескольких циклах поиска. Этот сценарий предназначен для регулярного запуска, поэтому я хотел бы знать, сохраняется ли коллекция в базе данных и должна ли она быть очищена, или сценарий в порядке как есть.
Кроме того, я новичок в PL / SQL, поэтому, если вы видите что-то не так со скриптом, пожалуйста, дайте мне знать.
Это будет работать на Oracle 10g и 11g.
Спасибо
DECLARE
TYPE sSysid IS TABLE OF person.sysid%TYPE
INDEX BY PLS_INTEGER;
l_sSysid sSysid;
BEGIN
SELECT sysid
BULK COLLECT INTO l_sSysid
FROM person
where purge_in_process = 1;
FORALL i IN l_sSysid.FIRST .. l_sSysid.LAST
delete from person_attribute where property_pk like concat(l_sSysid(i), '%');
FORALL i IN l_sSysid.FIRST .. l_sSysid.LAST
delete from person_property where person_sysid = l_sSysid(i);
FORALL i IN l_sSysid.FIRST .. l_sSysid.LAST
delete from person where sysid = l_sSysid(i);
END;
/
commit;