Subversion Repositories DevTools

Rev

Blame | Last modification | View Log | RSS feed

CREATE PROCEDURE "RELEASE_MANAGER"."SPLIT_VERSION" ( SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
                                            SSV_MM OUT PACKAGE_VERSIONS.V_MM%TYPE,
                                            SSV_NMM OUT PACKAGE_VERSIONS.V_NMM%TYPE,
                                            SSV_EXT OUT PACKAGE_VERSIONS.V_EXT%TYPE  ) IS
/* ---------------------------------------------------------------------------
    Version: 3.0.0
   --------------------------------------------------------------------------- */

    TYPE VERSION_COMPONENTS_TYPE IS TABLE OF VARCHAR2(50)
        INDEX BY BINARY_INTEGER;

    version_components VERSION_COMPONENTS_TYPE;
    lastDot NUMBER := 0;
    currDot NUMBER := 0;

BEGIN
    currDot := INSTR ( SSpkg_version, '.', -1 );      -- Find 1st dot from the right

    IF ( currDot > 0 )
    THEN
        -- YES dot separator found --
        SSV_EXT := GET_V_EXT( SSpkg_version );

        IF NOT SSV_EXT IS NULL
        THEN
            lastDot := currDot;
            currDot := INSTR ( SSpkg_version, '.', -1, 2 );   -- Find 2nd dot from the right

            IF ( currDot > 0 )
            THEN
                -- XXXX.M.E
                SSV_MM := SUBSTR ( SSpkg_version, currDot + 1, lastDot - currDot - 1);
                SSV_NMM := SUBSTR ( SSpkg_version, 0, currDot ) || SSV_EXT;
            ELSE
                -- XXXX.E
                SSV_MM := NULL;
                SSV_NMM := SSpkg_version;
            END IF;

        ELSE
            -- XXXX.M
            SSV_MM := SUBSTR ( SSpkg_version, currDot + 1, LENGTH(SSpkg_version) - currDot );
            SSV_NMM := SUBSTR ( SSpkg_version, 0, currDot );

        END IF;

    ELSE
        -- NO dot separator found --
        -- XXXXXX
        SSV_MM  := NULL;
        SSV_NMM := SSpkg_version;
        SSV_EXT := NULL;

    END IF;

END Split_Version;
/