pl/sql table和record类型

      table相当于数组,下面是一个table的实例:

    

declare
  /*自定义数组,类型为emp.empno%type,根据Binary_integer索引*/
  type mytable is table of emp.empno%type index by Binary_integer;
  v_empnos mytable;
begin
  /*下标可以为负数*/
  v_empnos(-1):=1000;
  v_empnos(234):=999;
  v_empnos(156):=123;
  
  dbms_output.put_line(v_empnos(156));
end;

  

    %type的意思:比如v_num emp.empno%type; 表示v_num的类型和emp表中的字段empno的字段类型一致。

   

declare
  /*emp.empno%type 表示v_num的类型和emp.empno的类型一致*/
  v_num emp.empno%type;
begin
  v_num:='234';
  dbms_output.put_line(v_num);
end;
  

   Record,相当于一个结构体。

   

declare
  /*自定义类型,相当于结构体*/
  type myrecord  is  Record
  (
     v_num  dept.deptno%type,
     v_name dept.dname%type,
     v_loc  dept.loc%type
  );
  v_record  myrecord;
begin
  /*给 v_record变量的每个字段赋值*/
  v_record.v_num:=10;
  v_record.v_name:='小卖部';
  v_record.v_loc:='泉州';
  dbms_output.put_line( v_record.v_num ||' '|| v_record.v_name ||' '|| v_record.v_loc );
end;
   

使用record变量类型时,如果表的结构发生改变(字段增删),这样需要从新定义
record类型,比较麻烦,解决方案可以用rowtype声明record变量类型

   

declare
	v_temp dept%rowtype;
begin
	v_temp.deptno:=50;
	v_temp.dname:='aaaa';
	v_temp.loc:='bj';
	dbms_output.put_line(v_temp.deptno||'  '||v_temp.dname);
end;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值