在使用ORACLE过程中,把一些常用的函数的相关用法,注意事项进行简单的汇总,便于自己查询参考。
-
DBMS_RANDOM包
dbms_random是一个可以生成随机数值或者字符串的程序包。这个包有initialize()、seed()、terminate()、value()、normal()、random()、string()等几个函数
- value() 用于返回两个数值之间的随机数,value(low,high)
- random() 返回的值介于2的31次方和-2的31次方之间的整形数值
- dbms_random.send方法
用于生成一个随机数种子,设置种子的目的是可以重复生成随机数,用于调试。否则每次不同,难以调度。
- dbms_random.normal方法
NORMAL函数返回服从正态分布的一组数。此正态分布标准偏差为1,期望值为0。这个函数返回的数值中有68%是介于-1与+1之间,95%介于-2与+2之间,99%介于-3与+3之间。
-
EXECUTE IMMEDIATE
解析并马上执行动态语句 ,或非运行时创建的pl/sql块
1. 不提交dml事务,要显式提交;
execute immediate处理ddl,会提交所以以前改变的数据;
2.不支持多行查询,可以临时表 或者ref cursors
3.执行sql不需语句,执行pl/sql 要加分号;
--0.传入
declare
i_aac001 number(6):=111;
begin
execute immediate 'insert into a2(aac001) values(:1)'
using i_aac001;
end;
insert into a2(aac001) values(1);
insert into a2(aac001) values(2);
--1.传入/传出
declare
cnt number(6);
begin
execute immediate 'select 1 from dual where 1=:1' into cnt
using cnt;
dbms_output.put_line(cnt);
end;
--2.调用存储过程
declare
s1 varchar2(10);
s2 varchar2(10);
begin
execute immediate 'begin test1(:1,:2); end;'
using s1,s2;
end;
--3.传值到记录
declare
--类型
--声明
type type_a is record(str varchar2(10));
v_a type_a;
v_b a2%rowtype;
begin
execute immediate 'select * from a2 where aac001=1742178'
into v_b;
end;
--4.多行查询 用临时表 或ref cursors
declare
l_sal pls_integer := 2000;
begin
execute immediate 'insert into temp(empno, ename) ' ||
' select empno, ename from emp ' ||
' where sal > :1'
using l_sal;
commit;
end;
http://baiyaoming.iteye.com/blog/1255016
for in 变量声明类型
-------------------------------
declare
cursor cur is select * from a2;
begin
for c in (select * from a2) loop
dbms_output.put_line(c.aac002);
end loop;
end;
insert into a2(aac001) values(1);
declare
type t_a is table of a2%rowtype;
type t_b is table of number(10) index by pls_integer;
v_a t_a;
v_b t_b;
begin
select aac001 bulk collect into v_b from a2;
for i in v_b.first..v_b.last loop
dbms_output.put_line(v_b(i));
end loop;
end;
-
REPLACE函数
replace(x,y,z)返回值为将串X中的Y串用Z串替换后的结果字符串。若省略Z参数,则将串X中为Y串的地方删除
-
TRUNC函数
TRUNC函数返回以指定元素格式截去一部分的日期值。
Unit
|
Valid format parameters
|
---|---|
Year
|
SYYYY, YYYY, YEAR, SYEAR, YYY, YY, Y
|
ISO Year
|
IYYY, IY, I
|
Quarter
|
Q
|
Month
|
MONTH, MON, MM, RM
|
Week
|
WW
|
IW
|
IW
|
W
|
W
|
Day
|
DDD, DD, J
|
Start day of the week
|
DAY, DY, D
|
Hour
|
HH, HH12, HH24
|
Minute
|
MI
|