Oracle随机函数的用法
容易得说,经过dbms_random包调用随机数的步骤大体有4种:
一、dbms_random.normal
这个函数不带参数,会回到normal distribution的一个number门类,之所以大抵随机数会在-一到一其间。
简略测试了一下子,发作100000次最大能到五上下:
SQL> declare
二 i number:=零;
三 j number:=零;
四 begin
五 for k in 一 .. 100000 loop
六 i:= dbms_random.normal;
七 if i > j
八 then j:=i;
九 end if;
十 end loop;
11 dbms_output.put_line(j);
12 end;
13 /
5.15325081797418404136433867107468983182
PL/SQL procedure successfully completed
二、dbms_random.random
这个也没有参数,回来一个从-power(二,31)到power(二,31)的整数值
三、dbms_random.value
这个函数分成两种,一种是没参数,则直接回来零-一其间的38位小数
SQL > column value format 9.99999999999999999999999999999999999999
SQL > select dbms_random.value from dual;
VALUE
-----------------------------------------
.58983014999643548701631750396301271752
第二种是加上两个参数a、b,则回来值在a、b其间的38位小数
SQL > column value format 999.999999999999999999999999999999999999
SQL > select dbms_random.value(100,500) value from dual;
VALUE
-----------------------------------------
412.150194612502916808701157054098274240
注意:无论是前方几位,小数点以后都是38位
四、dbms_random.string
这个函数务须含有两个参数,前方的字符指定门类,后头的数值指定位数(最大60)
部类说明:
'u','U' : upper case alpha characters only
'l','L' : lower case alpha characters only
'a','A' : alpha characters only (mixed case)
'x','X' : any alpha-numeric characters (upper)
'p','P' : any printable characters
SQL > column value format a30
SQL > select dbms_random.string('u',30) value from dual;
VALUE
VTQNLGISELPXEDBXKUZLXKBAJMUTIA
SQL > select dbms_random.string('l',30) value from dual;
VALUE
------------------------------
uqygsbquingfqdytpgjvdoblxeglgu
SQL > select dbms_random.string('a',30) value from dual;
 
相关文档:
1.数据库独立性
将应用从数据库A 移植到数据库B 时,我时常遇到这种问题:应用在数据库A 上原本无懈可击,到了
数据库B 上却不能工作,或者表现得很离奇。看到这种情况,我们的第一个想法往往是,数据库B 是一个
“不好的”数据库。而真正的原因其实是数据库B 的工作方式完全不同。没有哪个数据库是错的 ......
Oracle 3 个主要的内存结构:
系统全局区(System Global Area,SGA):这是一个很大的共享内存段,几乎所有Oracle
进程都要访问这个区中的某一点。
进程全局区(Process Global Area,PGA):这是一个进程或线程专用的内存,其他进程/
线程不能访问。
用户全局区(User Global Area,UGA):这个内存区与 ......
--JOBS
DECLARE
X NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT(job => X,
what => 'sp_test();',
next_date => to_date('28-04-2009 11:58:00',
'dd/mm/yyyy hh24:mi:ss'),
interval => 'SYSDATE+1');
END;
/
commit;
select to_char(sysdate-90,'yyyymmdd') from dual; --选择日期
select * from ......
Oracle创建表时,常遇到先删除后创建的情况,而它又没有drop table... if exists语法。为此可以使用user_objects数据字典和动态sql语句实现类似的功能,如下所示:
create or replace procedure proc_dropifexists(
p_table in varchar2
) is
v_count number(10);
begin
&nbs ......
1:重新在dbca中创建数据库并选择正确的字符集
2:
查询当前字符集:
select userenv('language') from dual;
select * from V$NLS_PARAMETERS;
在Windows下sqlplus完全正常,可是到Linux下,sqlplus中文显示就出问题了,总是显示“??”,这个问题又怎么解决呢?
经过在网络上查资料,以及尝试,得到 ......