UUID
CREATE TYPE UUID AS OBJECT
(
bytes RAW(16),
MEMBER FUNCTION
as_hex RETURN CHAR
);
CREATE TYPE BODY UUID AS
MEMBER FUNCTION as_hex RETURN CHAR IS
BEGIN
RETURN REGEXP_REPLACE(SELF.bytes, '([0-9A-F]{8})?([0-9A-F]{4})?([0-9A-F]{4})?([0-9A-F]{4})?([0-9A-F]{12})', '\1-\2-\3-\4-\5');
END;
END;