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()));
Bookmarks