pl/sql编程(五)

  • pl/sql数据类型
  1. 标量类型

   (1)数值类型

     number

     pls_integer、binary_integer

     simple_integer

    (2)字符类型

      char

      varchar2

      long

     nchar、nvarchar2

    (3)布尔类型

    取值:true、false、null

   (4)日期类型

    date

    timestamp

   (5)%type

    这是一个特殊的表示形式,在声明变量时可以使用它表示变量,对应数据表中某列的数据类型。

2.符合类型

  (1)记录类型  

      a.自定义的记录类型

declare

type goods_record is record

(

     v_goodsid number(4),

     v_goodsname varchar2(4000)

);

v_goods_record goods_record;

begin

     select goodsid ,goodsname into v_goods_record from goods where goodsid = 1;

     dbms_output.put_line('v_goodsid = ' || v_goods_record.v_goodsid);

     dbms_output.put_line('v_goodsname = ' || v_goods_record.v_goodsname);

end;

  结果:

v_goodsid = 1

v_goodsname = 白加黑

    b.利用%rowtype方式指明数据类型

declare 

v_goods_record goods%rowtype;

begin

     select * into v_goods_record from goods where goodsid = 2;

     dbms_output.put_line('v_goodsid = ' || v_goods_record.goodsid);

     dbms_output.put_line('v_goodsname = ' || v_goods_record.goodsname);

     dbms_output.put_line('v_remark = ' || v_goods_record.remark);

     

end;

  结果:

v_goodsid = 2

v_goodsname = 快克

v_remark = 5(出货)

  (2)索引表类型

declare 

type binary_inx_fst is table of goods%rowtype

     index by binary_integer;

type pls_inx_sec is table of varchar2(20)

     index by pls_integer;

type vchr_inx_thd is table of number(8)

     index by varchar2(20);

 v_inx_binary binary_inx_fst;

 v_inx_sec pls_inx_sec;

 v_inx_vchr vchr_inx_thd;

begin

     select * into v_inx_binary(1) from goods where goodsid = 2;

     dbms_output.put_line('v_inx_binary 的值='||v_inx_binary(1).goodsid||'--'||v_inx_binary(1).goodsname||'--'||v_inx_binary(1).remark);

     

     v_inx_sec(1) :='我的值是10!';

     v_inx_sec(-1) :='我的值是-10!';

     dbms_output.put_line('v_inx_sec(1)的值是='||v_inx_sec(1));

     dbms_output.put_line('v_inx_sec(-1)的值是='||v_inx_sec(-1));

     

     v_inx_vchr('f'):=123;

     v_inx_vchr('s'):=124;

     dbms_output.put_line('v_inx_vchr(f)的值='||v_inx_vchr('f'));

     dbms_output.put_line('v_inx_vchr.first)的值='||v_inx_vchr.first);

     dbms_output.put_line('v_inx_vchr(v_inx_vchr.first)的值='||v_inx_vchr(v_inx_vchr.first));

     dbms_output.put_line('v_inx_vchr(s)的值='||v_inx_vchr('s'));

end;

  结果:

v_inx_binary 的值=2--快克--5(出货)

v_inx_sec(1)的值是=我的值是10!

v_inx_sec(-1)的值是=我的值是-10!

v_inx_vchr(f)的值=123

v_inx_vchr.first)的值=f

v_inx_vchr(v_inx_vchr.first)的值=123

v_inx_vchr(s)的值=124

(3)变长数组类型
  

v_inx_binary 的值=2--快克--5(出货)

v_inx_sec(1)的值是=我的值是10!

v_inx_sec(-1)的值是=我的值是-10!

v_inx_vchr(f)的值=123

v_inx_vchr.first)的值=f

v_inx_vchr(v_inx_vchr.first)的值=123

v_inx_vchr(s)的值=124

  结果:

v_varr(1) = 我是

v_varr(2) = 变长

 

你可能感兴趣的:(pl/sql)