互联网服务触发器

随机函数的问题

CREATE PROCEDURE sp_random(n integer) RETURNING INTEGER;        DEFINE GLOBAL seed DECIMAL(10) DEFAULT 1;        DEFINE d DECIMAL(20,0);        LET d = (seed * ...显示全部
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;

这个随机函数我这样用select sp_random(100) from table,会返回100以内的随机值,可是我每次手工执行的时候都没有问题,定时执行或做成触发器就不行了,返回的总是固定值!怎么回事呢?收起
参与4

查看其它 3 个回答villager的回答

villagervillager软件开发工程师中国建设银行
可以考虑建个表把seed放表里。每次取出,重算后更新。
互联网服务 · 2011-03-21
浏览1139

回答者

villager
软件开发工程师中国建设银行

villager 最近回答过的问题

回答状态

  • 发布时间:2011-03-21
  • 关注会员:0 人
  • 回答浏览:1139
  • X社区推广