ruby: handle singleton method including ?!= in its name(sf.bug:364)
[geany-mirror.git] / tests / ctags / random.sql
blob98e26cd2955cec7055a6219665c4db48a5c195ee
1 /*
2 ------------------------------------------------------------------------------
3 URL:       http://www.orafaq.com/scripts/plsql/random.txt
4 Filename:  random.txt
5 Purpose:   Random number/ string generator package
6 Author:    Unknown
7 Original:  http://www.orafaq.org/scripts/sql/random.txt
8 Edits:
9  19990908 Phil Rand <prand@spu.edu> Added functions rand_string(), smaller().
10 ------------------------------------------------------------------------------
13 create or replace package random
15    procedure srand(new_seed in number);
16    procedure get_rand(r OUT number);
17    procedure get_rand_max(r OUT number, n IN number);
18    function  rand return number;
19    function  rand_max(n IN number) return number;
20    function  rand_string(ssiz IN number) return varchar2;
21    function  smaller(x IN number, y IN number) return number;
22    pragma restrict_references(rand, WNDS);
23    pragma restrict_references(rand_max, WNDS);
24    pragma restrict_references(random, WNDS, RNPS);
25    pragma restrict_references(rand_string, WNDS);
26    pragma restrict_references(smaller, WNDS);
27 end random;
30 create or replace package body random
32    multiplier   constant number := 22695477;
33    increment    constant number := 1;
34    "2^32"       constant number := 2 ** 32;
35    "2^16"       constant number := 2 ** 16;
36    "0x7fff"     constant number := 32767;
37    Seed         number          := 1;
39    function  smaller(x IN number, y IN number) return number is
40    begin
41         if x <= y then
42             return x;
43         else
44             return y;
45         end if;
46    end smaller;
48    function rand_string(ssiz IN number) return varchar2 is
49      i      number;
50      m      number;
51      c      char;
52      result varchar2(2000) := '';
53    begin
54         m := smaller(ssiz,2000);
55         for i in 1..m loop
56             c := substr('abcdefghijklmnopqrstuvwxyz0123456789',rand_max(36),1);
57             result := result || c;
58         end loop;
59         return result;
60    end rand_string;
62    procedure srand(new_seed in number) is
63    begin
64      Seed := new_seed;
65    end srand;
67    function rand return number is
68    begin
69      Seed := mod(multiplier * Seed + increment, "2^32");
70      return bitand(Seed/"2^16", "0x7fff");
71    end rand;
73    procedure get_rand(r OUT number) is
74    begin
75      r := rand;
76    end get_rand;
78    function rand_max(n IN number) return number is
79    begin
80      return mod(rand, n) + 1;
81    end rand_max;
83    procedure get_rand_max(r OUT number, n IN number) is
84    begin
85      r := rand_max(n);
86    end get_rand_max;
88 begin
89    select userenv('SESSIONID')
90    into   Seed
91    from   dual;
92 end random;
95 -- Some examples:
96 select random.rand_max(10) from dual;
97 select random.rand_max(10) from dual;
98 select random.rand_string(20) from dual;
99 select random.rand_string(20) from dual;