informix没有自带的随机数函数,所以在通过存储过程制造大量测试预置数据时不能随机赋值会造成困扰,现提供一个随机数函数加载到相应数据库后可直接调用获取随机数:
CREATE PROCEDURE sp_setseed(n INTEGER)
DEFINE GLOBAL seed DECIMAL(10) DEFAULT 1;
LET seed = n;
END PROCEDURE;
CREATE PROCEDURE sp_random(n integer) 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), n);
END PROCEDURE;
使用方法,例如:
let vresult = sp_random(2); --随机生成投递结果0,1
let vsendtype = sp_random(4); --随机生成投递类型0,1,2,3
注:sp_random(n) 为获取0到n-1的随机数