Subversion Repositories DevTools

Rev

Blame | Last modification | View Log | RSS feed

CREATE PROCEDURE "RELEASE_MANAGER"."UPDATE_RUNTIME_DEPENDENCY" ( NNpv_id IN RUNTIME_DEPENDENCIES.pv_id%TYPE,
                                                                                                            NNrtd_id IN RUNTIME_DEPENDENCIES.rtd_id%TYPE,
                                                                                                            SSrtd_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
                                                                                                            SSrtd_url IN RUNTIME_DEPENDENCIES.rtd_url%TYPE,
                                                                                                            SSrtd_comments IN RUNTIME_DEPENDENCIES.rtd_comments%TYPE,
                                                                                                            NNuser_id IN NUMBER ) IS
/* ---------------------------------------------------------------------------
    Version: 3.0.1
   --------------------------------------------------------------------------- */

    retRTD_ID   NUMBER;
        CURSOR rtd_cur IS
            SELECT pv.pkg_version, pkg.pkg_name
                  FROM runtime_dependencies rtd,
                       package_versions pv,
                           packages pkg
                 WHERE rtd.rtd_id = pv.pv_id
                   AND pv.pkg_id = pkg.pkg_id
                   AND rtd.pv_id = NNpv_id
                   AND rtd.rtd_id = NNrtd_id;
           rtd_rec rtd_cur%ROWTYPE;

        CURSOR old_rtd_cur IS
            SELECT pv.pv_id
                  FROM package_versions pv
                 WHERE pv.pkg_id IN ( SELECT rtdpv.pkg_id
                                                            FROM package_versions rtdpv
                                                           WHERE rtdpv.pv_id = NNrtd_id )
                   AND pv.pkg_version = SSrtd_version;
        old_rtd_rec old_rtd_cur%ROWTYPE;


BEGIN

    -- Get current runtime dependency details
        OPEN rtd_cur;
    FETCH rtd_cur INTO rtd_rec;




        IF rtd_rec.pkg_version != SSrtd_version THEN
           -- Version has changed, hence create new runtime dependency --
            /* NOTE: You must create new version as updating just a version will affect
                        all packages using this runtime dependency and user does not expect that.
                        It is safer to create new version */
                OPEN old_rtd_cur;
                FETCH old_rtd_cur INTO old_rtd_rec;


                IF old_rtd_cur%NOTFOUND
                THEN
                        -- Version not found, hence Create New version --
                Seed_Package_Names_Versions ( rtd_rec.pkg_name, SSrtd_version, NNuser_id, retRTD_ID );

                        -- Update runtime dependency table --
                        UPDATE runtime_dependencies SET
                                   rtd_id = retRTD_ID,
                                   rtd_url = SSrtd_url,
                                   rtd_comments = SSrtd_comments
                         WHERE pv_id = NNpv_id
                           AND rtd_id = NNrtd_id;

                ELSE
                        -- Update runtime dependency table --
                        UPDATE runtime_dependencies SET
                                   rtd_id = old_rtd_rec.pv_id,
                                   rtd_url = SSrtd_url,
                                   rtd_comments = SSrtd_comments
                         WHERE pv_id = NNpv_id
                           AND rtd_id = NNrtd_id;

                END IF;


                CLOSE old_rtd_cur;

        ELSE
                --  Version has not changed, hence update everithing except     version --
                UPDATE runtime_dependencies SET
                           rtd_url = SSrtd_url,
                           rtd_comments = SSrtd_comments
                 WHERE pv_id = NNpv_id
                   AND rtd_id = NNrtd_id;



        END IF;


        CLOSE rtd_cur;

END Update_Runtime_Dependency;
/