1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
| CREATE OR REPLACE PACKAGE PANNY."PACK_UUID" IS
SUBTYPE guid_t IS RAW (16);
SUBTYPE generated_guid_t IS varchar2 (38);
c_mask CONSTANT generated_guid_t := '{________-____-____-____-____________}';
FUNCTION is_generated_guid (string_in IN varchar2)
RETURN BOOLEAN;
FUNCTION generated_guid (guid_in IN varchar2)
RETURN generated_guid_t;
FUNCTION generated_guid
RETURN generated_guid_t;
SUBTYPE test IS generated_guid_t;
END PACK_UUID;
/
CREATE OR REPLACE PACKAGE BODY PANNY."PACK_UUID" IS
FUNCTION is_generated_guid (string_in IN varchar2)
RETURN BOOLEAN
IS
BEGIN
RETURN string_in LIKE c_mask;
END is_generated_guid;
FUNCTION generated_guid (guid_in IN varchar2)
RETURN generated_guid_t
IS
BEGIN
IF is_generated_guid (guid_in)
THEN
RETURN guid_in;
ELSIF is_generated_guid ('{' || guid_in || '}')
THEN
RETURN generated_guid ('{' || guid_in || '}');
ELSE
RETURN '{'
|| SUBSTR (guid_in, 1, 8)
|| '-'
|| SUBSTR (guid_in, 9, 4)
|| '-'
|| SUBSTR (guid_in, 13, 4)
|| '-'
|| SUBSTR (guid_in, 17, 4)
|| '-'
|| SUBSTR (guid_in, 21)
|| '}';
END IF;
END generated_guid;
FUNCTION generated_guid
RETURN generated_guid_t
IS
BEGIN
RETURN generated_guid (SYS_GUID);
END generated_guid;
END PACK_UUID; |