comment extraire, de supprimer, de s'engager à partir du curseur

Je suis en train de supprimer beaucoup de lignes dans une table. Je veux essayer l'approche de la mise lignes je veux supprimer dans un curseur, puis continuer à le faire, d'extraction, de supprimer, de s'engager sur chaque ligne du curseur jusqu'à ce qu'elle est vide.

Dans le code ci-dessous nous sont fetching lignes et de les mettre dans un TYPE.

Comment puis-je modifier le code ci-dessous pour supprimer le TYPE de l'image et tout simplement ne fetch,delete,commit sur le curseur lui-même.

    OPEN bulk_delete_dup;
    LOOP
        FETCH bulk_delete_dup BULK COLLECT INTO arr_inc_del LIMIT c_rows;

        FORALL i IN arr_inc_del.FIRST .. arr_inc_del.LAST
              DELETE FROM UIV_RESPONSE_INCOME 
              WHERE ROWID = arr_inc_del(i);

        COMMIT;
        arr_inc_del.DELETE;
        EXIT WHEN bulk_delete_dup%NOTFOUND;
    END LOOP;
    arr_inc_del.DELETE;
    CLOSE bulk_delete_dup;
  • Je m'assurerais qu'un jeu basé sur la solution n'est pas une option avant d'essayer d'aller le parcours d'un curseur. Un jeu basé sur la solution sera nettement plus efficace, moins de code, et plus facile à comprendre qu'un curseur... puis-je vous demander pourquoi un standard supprimer ne fonctionne pas dans votre scénario?
  • Il y a une politique qui est à mon lieu de travail. Pas une seule transaction doit être en cours d'exécution de plus de 8 secondes. C'est pourquoi je ne pouvais pas tout simplement le faire en une seule ligne de sql.
  • Donc, la solution à cette douteuse de la politique, est de couper toutes les transactions en-ligne-transactions, et de sacrifier la cohérence de vos données??
  • Terrible de la politique en effet.
InformationsquelleAutor Omnipresent | 2011-04-22