PL/SQL控制语句

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

1、PLSQL中的数组共分三类:
 
I  - 嵌套表(Nested tables)

TYPE nested_type IS TABLE OF VARCHAR2 ( 30 ) [not null];

-- 值为 varchar2 的数组,下标为默认 int 

特征:可删除信息,下标不变
 
II - 变长数组(Variable-Sized Arrays)

TYPE Calendar IS VARRAY ( 366 OF NUMBER ;

--366  number 数组,下标 1-366( 不是 0-365)

特征:一般在可预知数组个数的情况下使用,类似其他语言的Array
 
III- 索引表(Associative Array) 

TYPE population_type IS TABLE OF NUMBER

INDEX BY VARCHAR2 ( 64 );

-- 下标是 varchar2 ,值是 number 的数组

特征:可使用不连续数字、负数、字符作为下标,长度大小可变
      在创建数组时便分配内存,无需之后申请
      index by 只能跟BINARY_INTEGERPLS_INTEGERVARCHAR2三种类型

随机函数:DBMS_RANDOM.VALUE(num1,num2). 

这个函数跟c语言的随机函数一样,都是产生0~1之间的数。然后通过num1 和num2设置随机数大小。


这段代码的效果还是很不错的。我在文章中粘贴了图片。但我不知道为什么,在前两篇文章中我粘贴上去的图片都不见了。不知道这次会不会也没有图片。








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值