Hier ein paar SQL Funktionen falls sie jemand brauchen kann

edit:
Der Include für den genuuid Header geht beim Posten immer kaputt, da sollte '#include (Kleiner-als-Zeichen)mih/genuuid.h(Größer-als-Zeichen)' stehen.

Code:
CREATE TYPE UUID AS BINARY(16) WITH COMPARISONS;

CALL QCMDEXC('CRTSRCPF FILE(QTEMP/TMP) MBR(TMP) RCDLEN(200)');
INSERT INTO QTEMP.TMP(SRCDTA) VALUES
    ('#include '),
    ('_UUID_Template_T uuid_template = { sizeof(_UUID_Template_T) };'),
    ('_GENUUID(&uuid_template);'),
    ('cpybytes(MAIN.RESULT, uuid_template.uuid, 16);');

CREATE OR REPLACE FUNCTION GENERATE_UUID()
    RETURNS UUID
    LANGUAGE SQL
    CONTAINS SQL
    NO EXTERNAL ACTION
    NOT DETERMINISTIC
    MAIN:BEGIN
        DECLARE RESULT BINARY(16) DEFAULT bx'';
        INCLUDE QTEMP/TMP(TMP);
        RETURN RESULT;
    END;

CREATE OR REPLACE FUNCTION UUID_TO_STRING(UUID UUID)
    RETURNS CHAR(36)
    LANGUAGE SQL
    CONTAINS SQL
    NO EXTERNAL ACTION
    DETERMINISTIC
    RETURN LOWER(
        HEX(SUBSTR(CAST(UUID AS BINARY(16)), 1, 4)) CONCAT '-' CONCAT
        HEX(SUBSTR(CAST(UUID AS BINARY(16)), 5, 2)) CONCAT '-' CONCAT
        HEX(SUBSTR(CAST(UUID AS BINARY(16)), 7, 2)) CONCAT '-' CONCAT
        HEX(SUBSTR(CAST(UUID AS BINARY(16)), 9, 2)) CONCAT '-' CONCAT
        HEX(SUBSTR(CAST(UUID AS BINARY(16)), 11, 6))
    );

CREATE OR REPLACE FUNCTION UUID_FROM_STRING(UUID_STRING VARCHAR(36))
    RETURNS UUID
    LANGUAGE SQL
    CONTAINS SQL
    NO EXTERNAL ACTION
    DETERMINISTIC
    RETURN CAST(HEXTORAW(
        SUBSTR(UUID_STRING, 1, 8) CONCAT
        SUBSTR(UUID_STRING, 10, 4) CONCAT
        SUBSTR(UUID_STRING, 15, 4) CONCAT
        SUBSTR(UUID_STRING, 20, 4) CONCAT
        SUBSTR(UUID_STRING, 25, 12)
    ) AS UUID);
    
    
VALUES GENERATE_UUID();
VALUES UUID_TO_STRING(GENERATE_UUID());
VALUES UUID_FROM_STRING(UUID_TO_STRING(GENERATE_UUID()));