| 221 |
vnguyen |
1 |
CREATE PROCEDURE "RELEASE_MANAGER"."SPLIT_VERSION" ( SSpkg_version IN PACKAGE_VERSIONS.pkg_version%TYPE,
|
|
|
2 |
SSV_MM OUT PACKAGE_VERSIONS.V_MM%TYPE,
|
|
|
3 |
SSV_NMM OUT PACKAGE_VERSIONS.V_NMM%TYPE,
|
|
|
4 |
SSV_EXT OUT PACKAGE_VERSIONS.V_EXT%TYPE ) IS
|
|
|
5 |
/* ---------------------------------------------------------------------------
|
|
|
6 |
Version: 3.0.0
|
|
|
7 |
--------------------------------------------------------------------------- */
|
|
|
8 |
|
|
|
9 |
TYPE VERSION_COMPONENTS_TYPE IS TABLE OF VARCHAR2(50)
|
|
|
10 |
INDEX BY BINARY_INTEGER;
|
|
|
11 |
|
|
|
12 |
version_components VERSION_COMPONENTS_TYPE;
|
|
|
13 |
lastDot NUMBER := 0;
|
|
|
14 |
currDot NUMBER := 0;
|
|
|
15 |
|
|
|
16 |
BEGIN
|
|
|
17 |
currDot := INSTR ( SSpkg_version, '.', -1 ); -- Find 1st dot from the right
|
|
|
18 |
|
|
|
19 |
IF ( currDot > 0 )
|
|
|
20 |
THEN
|
|
|
21 |
-- YES dot separator found --
|
|
|
22 |
SSV_EXT := GET_V_EXT( SSpkg_version );
|
|
|
23 |
|
|
|
24 |
IF NOT SSV_EXT IS NULL
|
|
|
25 |
THEN
|
|
|
26 |
lastDot := currDot;
|
|
|
27 |
currDot := INSTR ( SSpkg_version, '.', -1, 2 ); -- Find 2nd dot from the right
|
|
|
28 |
|
|
|
29 |
IF ( currDot > 0 )
|
|
|
30 |
THEN
|
|
|
31 |
-- XXXX.M.E
|
|
|
32 |
SSV_MM := SUBSTR ( SSpkg_version, currDot + 1, lastDot - currDot - 1);
|
|
|
33 |
SSV_NMM := SUBSTR ( SSpkg_version, 0, currDot ) || SSV_EXT;
|
|
|
34 |
ELSE
|
|
|
35 |
-- XXXX.E
|
|
|
36 |
SSV_MM := NULL;
|
|
|
37 |
SSV_NMM := SSpkg_version;
|
|
|
38 |
END IF;
|
|
|
39 |
|
|
|
40 |
ELSE
|
|
|
41 |
-- XXXX.M
|
|
|
42 |
SSV_MM := SUBSTR ( SSpkg_version, currDot + 1, LENGTH(SSpkg_version) - currDot );
|
|
|
43 |
SSV_NMM := SUBSTR ( SSpkg_version, 0, currDot );
|
|
|
44 |
|
|
|
45 |
END IF;
|
|
|
46 |
|
|
|
47 |
ELSE
|
|
|
48 |
-- NO dot separator found --
|
|
|
49 |
-- XXXXXX
|
|
|
50 |
SSV_MM := NULL;
|
|
|
51 |
SSV_NMM := SSpkg_version;
|
|
|
52 |
SSV_EXT := NULL;
|
|
|
53 |
|
|
|
54 |
END IF;
|
|
|
55 |
|
|
|
56 |
END Split_Version;
|
|
|
57 |
/
|