【发布时间】:2011-02-24 20:01:20
【问题描述】:
我有一个 sysid 集合,用于在多个 forall 循环中进行迭代。该脚本旨在定期运行,因此我想知道该集合是否保留在数据库中并需要清除,或者该脚本是否正常。
另外,我是 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;
【问题讨论】:
标签: sql oracle plsql oracle10g oracle11g