- 论坛徽章:
- 0
|
- 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;
- -- MOD function does not handle 20-digit values... Dammit!!
- LET seed = d - 4294967296 * TRUNC(d / 4294967296);
- --- is this ok ???
- RETURN MOD(TRUNC(seed / 65536), n);
- END PROCEDURE;
- dbaccess dbname <<EOF
- select sp_random(9) from systables
- ;
- EOF
复制代码
[ 本帖最后由 ivhb 于 2007-7-24 14:56 编辑 ] |
|