PL/SQL实在SQL语言的基础上添加了过程性特性的一门语言,PL/SQL具有第三代语言(3GL)的特性。这让SQL语言拥有了结构化程序设计的特性,是的开发人员可以直接使用PL/SQL进行复杂业务逻辑的编写。
刚刚开始学oracle,最烦的还是没有数据可以供我使用。如果是自己逐行增加数据(insert into每次只能插入一行),我又觉得很烦,很没意思。所以我就想着用过程控制实现。
我建了一个员工表,有员工号,姓名,部门号(外键),性别,工资。
先直接上代码好了。
declare
TYPE arr is VARRAY(20) of varchar(20);
Xing_arr arr;
Ming_arr arr;
Xcount integer :=10;
Mcount integer :=16;
X integer :=0;
M1 integer :=0;
M2 integer :=0;
salary integer :=0;
sex varchar(4) ;
begin
Xing_arr :=arr('赵','钱','孙','李','周','吴','郑','王','陈','刘'); --10
Ming_arr :=arr('风','欣','信','红','伟','清','胜','鹏','静','健','缘','松','丹','福','雨','玉'); --16
for i IN 1000 .. 1030
loop
X:=DBMS_RANDOM.value(1,10);
M1:=DBMS_RANDOM.value(1,16);
M2:=DBMS_RANDOM.value(1,16);
salary:= DBMS_RANDOM.value(3000,7000);
IF i<1012
THEN
sex:='男';
ELSE
sex:='女';
END IF;
insert into EMP VALUES(i,CONCAT(Xing_arr(X),CONCAT(Ming_arr(M1),Ming_arr(M2))),1001,sex,salary);
end loop;
end;
在这里我使用了数组存储姓和名,同时利用随机数组,随机组合名字,然后通过字符串组合函数concat,将随机选中的姓名拼成一个字符串。工资也是一个随机数。
数组定义:(摘抄参考自:http://www.blogjava.net/decode360/archive/2008/08/08/280825.html)
TYPE nested_type IS TABLE OF VARCHAR2 ( 30 ) [not null];
-- 值为 varchar2 的数组,下标为默认 int ;
TYPE Calendar IS VARRAY ( 366 ) OF NUMBER ;
--366 个 number 数组,下标 1-366( 不是 0-365)
TYPE population_type IS TABLE OF NUMBER
INDEX BY VARCHAR2 ( 64 );
-- 下标是 varchar2 ,值是 number 的数组
随机函数:DBMS_RANDOM.VALUE(num1,num2).
这个函数跟c语言的随机函数一样,都是产生0~1之间的数。然后通过num1 和num2设置随机数大小。
这段代码的效果还是很不错的。我在文章中粘贴了图片。但我不知道为什么,在前两篇文章中我粘贴上去的图片都不见了。不知道这次会不会也没有图片。