Subversion Repositories DevTools

Rev

Blame | Last modification | View Log | RSS feed

CREATE PROCEDURE "RELEASE_MANAGER"."SHIFT_INSTALL_ORDER" ( nPatchId IN PACKAGE_PATCHES.PATCH_ID%TYPE,
                                                                                                  nPvId IN PACKAGE_PATCHES.PV_ID%TYPE,
                                                  nToInstallOrder IN PACKAGE_PATCHES.INSTALL_ORDER%TYPE ) IS
/* ---------------------------------------------------------------------------
    Version: 3.0
   --------------------------------------------------------------------------- */

currInstallOrder NUMBER;
FromInstallOrder NUMBER;

BEGIN

         -- Get Current Install Order
     SELECT pp.INSTALL_ORDER INTO currInstallOrder
       FROM PACKAGE_PATCHES pp
      WHERE pp.PV_ID = nPvId
        AND pp.PATCH_ID = nPatchId;


         IF currInstallOrder > nToInstallOrder
         THEN

                FromInstallOrder := nToInstallOrder;

            -- Shift others Up
                UPDATE PACKAGE_PATCHES pp SET
                           pp.INSTALL_ORDER = pp.INSTALL_ORDER + 1
                 WHERE pp.PV_ID = nPvId
           AND pp.PATCH_ID != nPatchId
                   AND pp.INSTALL_ORDER BETWEEN  FromInstallOrder  AND  currInstallOrder - 1;


         ELSIF currInstallOrder < nToInstallOrder
         THEN

                FromInstallOrder := currInstallOrder + 1;

                -- Shift others Down
        UPDATE PACKAGE_PATCHES pp SET
                           pp.INSTALL_ORDER = pp.INSTALL_ORDER - 1
                 WHERE pp.PV_ID = nPvId
           AND pp.PATCH_ID != nPatchId
                   AND pp.INSTALL_ORDER BETWEEN  FromInstallOrder  AND  nToInstallOrder;

         END IF;


         -- Move Patch to new install order
     UPDATE PACKAGE_PATCHES pp SET
                    pp.INSTALL_ORDER = nToInstallOrder
          WHERE pp.PV_ID = nPvId
            AND pp.PATCH_ID = nPatchId;


END Shift_Install_Order;
/