PL/SQL中的数组/集合/枚举类型

PL/SQL中的数组/集合/枚举类型

–PL/SQL中提供了叫VARRAY的数据结构,可以有序的存储相同类型的一组变量的集合.

语法:

create or replace type 数组类型名 is varray(3) of 数组元素类型;

案例:

create or replace type names is varray(3) of varchar2(10);

以上案例的意思是创建了一个叫names的数组,长度为3,里边的每一个元素都是varchar2类型,初始值为null;

–给数组赋值

declare
   name1 names:=names('tom','andy','jack');
begin
   dbms_output.put_line('name1的长度为:'||name1.count||',第一个元素是:'||name1(1));
end;

解释:以上案例中的name1.count用来获取数组长度类型,name1(1)是获取第一个元素的值,数据库中VARRAY从1开始计数,若想修改声明过的VARRAY的长度可以用ALTER TYPE进行修改.

–另外一种创建方式,在declare中声明,比较常用

declare
  type nums is varray(5) of integer;
  num1 nums:=nums(10,20,50,8,9);
begin
  dbms_output.put_line('num1的长度是:'||num1.count);
  for i in 1..num1.count  loop
     dbms_output_put_line(num1(i));
  end loop;
end;

区别:声明在declare中的VARRAY类型只对当前PL/SQL语句块有效,使用create type创建的对所有PL/SQL语句块都有效.

利用表或列快速定义数据类型

–具体方法:

–变量名 表名%rowtype:可以使用该表中一条记录为一个类型,包含其各个字段的类型

–变量名 表名.列名%type:使用该表中的某个字段的类型,使用的时候直接是变量名

案例:
查询出emp表中指定编号的员工姓名以及指定编号的员工所有信息赋值给eno和names和emps,并输出.

declare
   eno emp.empno%type:=7369;
   names emp.ename%type;
   emps emp%rowtype;
begin
   select ename into names from emp where empno= eno;
   dbms_output.put_line(names);
   select * into emps from emp where empno=7369;
   dbms_output.put_line(emps.empno||','||emps.ename||','||emps.job ||','||emps.sal);
end;

解释:

declare
   eno emp.empno%type:=1001;
   names emp.ename%type;
   emps emp%rowtype;

声明eno变量类型引用emp表中empno字段的类型,为number类型.

声明names变量,类型引用emp表中ename字段的类型,为varchar2类型

声明emps变量,类型引用emp表中一条记录的所有字段的类型,存储的也就是该条记录的所有字段信息.

begin
select ename into names from emp where empno= eno;
   dbms_output.put_line(names);
select * into emps from emp where empno=7369;
   dbms_output.put_line(emps.empno||','||emps.ename||','||emps.job ||','||emps.sal);
end;

两个框里选中的部分:

ename into names:将查询到的ename通过into赋值给names变量

  • into emps:将查询出来的该条记录的所有字段通过into保存到emps变量中,在使用的时候通过在这里插入图片描述
    该变量名点字段名即可.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值