Informix Random Sh*t

Dass man bei Informix für das wenige Geld nicht mal eine Random Funktion bekommt, das ist wohl klar. Wie auch immer: Hab lange danach gegoogelt, eine gefunden, geklaut und hier gespeichert, damit ich sie nicht vergesse.

DROP PROCEDURE IF EXISTS dup_test_sp_random;
CREATE PROCEDURE dup_test_sp_random() RETURNING INTEGER;
DEFINE GLOBAL seed DECIMAL(10) DEFAULT 1;
DEFINE d DECIMAL(20,0);
LET d = (seed * 1103515245) + 12345;
LET seed = d - 4294967296 * TRUNC(d / 4294967296);
RETURN MOD(TRUNC(seed / 65536), 32768);
END PROCEDURE;

Wie auch immer: wenn Unternehmen sich PostgreSQL oder andere Gratisprodukte nicht leisten können,…