Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

PL/SQL random

10 views
Skip to first unread message

Jan Kretzschmer

unread,
Apr 21, 1997, 3:00:00 AM4/21/97
to

Does anyone know if a random function exists for Oracle PL/SQL ?


thanks

Ludo Joris

unread,
Apr 21, 1997, 3:00:00 AM4/21/97
to

"Jan Kretzschmer" <j...@lyngso-industri.dk> wrote:

>Does anyone know if a random function exists for Oracle PL/SQL ?
>
>
>thanks
>
>

My Oracle7 RDBMS v7.3.2.2 came with Oracle Web Server 1.0.
There is a random generator in $ORACLE_HOME/ows/demo/util.sql.

HTH

--
Ludo Joris
RUCA - University of Antwerp, Belgium
lu...@ruca.ua.ac.be

R Gauthier

unread,
Apr 21, 1997, 3:00:00 AM4/21/97
to

Hi Jan,

There is no random function as such. If you are using PRO*C it has
a random generator. If not, try using the HSECS field from the
V$TIMER table which shows the time in hundreds of seconds.

Hope this helps !

Robert
robe...@compuserve.com

Thomas Kyte

unread,
Apr 22, 1997, 3:00:00 AM4/22/97
to

Here is one I use....

--

Thomas Kyte
tk...@us.oracle.com
Oracle Government
Bethesda MD

http://govt.us.oracle.com/

----------------------------------------------------------------------------

Opinions are mine and do not necessarily reflect those of Oracle
Corporation


Jan Kretzschmer <j...@lyngso-industri.dk> wrote in article
<01bc4e55$576429a0$ea02...@jak.lint.lyngso-industri.dk>...


> Does anyone know if a random function exists for Oracle PL/SQL ?
>
>
> thanks
>
>
>

create or replace package random
is
pragma restrict_references( random, WNDS, RNPS );

procedure srand( new_seed in number );

function rand return number;
pragma restrict_references( rand, WNDS );

procedure get_rand( r OUT number );

function rand_max( n IN number ) return number;
pragma restrict_references( rand_max, WNDS);

procedure get_rand_max( r OUT number, n IN number );

end random;
/

create or replace package body random
is
multiplier constant number := 22695477;
increment constant number := 1;
"2^32" constant number := 2 ** 32;
"2^16" constant number := 2 ** 16;
"0x7fff" constant number := 32767;
Seed number := 1;
--
procedure srand( new_seed in number )
is
begin
Seed := new_seed;
end srand;
--
function rand return number
is
begin
seed := mod( multiplier * seed + increment, "2^32" );
return bitand( seed/"2^16", "0x7fff" );
end rand;
--
procedure get_rand( r OUT number )
is
begin
r := rand;
end get_rand;
--
function rand_max( n IN number ) return number
is
begin
return mod( rand, n ) + 1;
end rand_max;
--
procedure get_rand_max( r OUT number, n IN number )
is
begin
r := rand_max( n );
end get_rand_max;
--
begin
select userenv( 'SESSIONID' ) into seed from dual;
end random;
/


0 new messages