Subversion Repositories DevTools

Rev

Blame | Last modification | View Log | RSS feed

CREATE PROCEDURE "RELEASE_MANAGER"."RENAME_PACKAGE_VERSION" ( NNpv_id IN NUMBER,
                                                     SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
                                                                                                         cBuildType IN CHAR,
                                                     NNuser_id IN NUMBER,
                                                     errMessage OUT VARCHAR2 ) IS
/* ---------------------------------------------------------------------------
    Version: 3.2
   --------------------------------------------------------------------------- */

    sPackageVersion VARCHAR2(4000);
        sLabel VARCHAR2(4000) := NULL;
    OldPkgVersion PACKAGE_VERSIONS.PKG_VERSION%TYPE;

    SSV_MM PACKAGE_VERSIONS.V_MM%TYPE;
    SSV_NMM PACKAGE_VERSIONS.V_NMM%TYPE;
    SSV_EXT PACKAGE_VERSIONS.V_EXT%TYPE;

    CURSOR package_versions_cur IS
        SELECT pv_id
          FROM package_versions
         WHERE pkg_id IN ( SELECT pkg_id FROM package_versions WHERE pv_id = NNpv_id )
           AND pkg_version = SSpkg_version;
    package_versions_rec package_versions_cur%ROWTYPE;


BEGIN

    /* ---------------------------------------------------- */
    /* Find if package_version exists                       */
    /* ---------------------------------------------------- */

        errMessage := NULL;


        -- Get previous version
        SELECT pv.PKG_VERSION INTO OldPkgVersion
      FROM PACKAGE_VERSIONS pv
     WHERE pv.PV_ID = NNpv_id;


        sPackageVersion := SSpkg_version;


        IF OldPkgVersion != sPackageVersion THEN

            OPEN package_versions_cur;
            FETCH package_versions_cur INTO package_versions_rec;

            IF package_versions_cur%NOTFOUND
            THEN

                        -- Split current version in parts
                Split_Version ( SSpkg_version, SSV_MM, SSV_NMM, SSV_EXT );


                    -- Automated built config
                        IF (cBuildType = 'A') THEN
                                sPackageVersion := '('|| NNpv_id ||')'|| SSV_EXT;       -- Make sure that version is still unique
                        END IF;


                -- Packge version not found, hence rename it.
                UPDATE package_versions
                   SET pkg_version = sPackageVersion,
                       v_mm = SSV_MM,
                       v_nmm = SSV_NMM,
                       v_ext = SSV_EXT,
                       modified_stamp = ORA_SYSDATETIME,
                       modifier_id = NNuser_id,
                                   build_type = cBuildType,
                                   pkg_label = NULL
                 WHERE pv_id = NNpv_id;


                        IF (cBuildType = 'A') THEN
                                sLabel := GET_AUTOMATED_LABEL( NNpv_id );
                                UPDATE PACKAGE_VERSIONS pv SET
                                        pv.PKG_LABEL = sLabel
                         WHERE pv_id = NNpv_id;
                        END IF;

                        /* LOG ACTION */
                Log_Action ( NNpv_id, 'rename', NNuser_id, 'From '|| OldPkgVersion ||' to '|| SSpkg_version );

            ELSE
                -- Package version exists. Cannot proceed.
                errMessage := 'enum_MSG_VERSION_EXISTS';

            END IF;

            CLOSE package_versions_cur;

        END IF;




END Rename_Package_Version;
/