oracle plsql type使用

 

文章目录

 


前言

oracle plsql 中可以通过定义type来定义结构体


一、oracle plsql type 使用

Oracle中一般会在procedure,function,package中使用type,也有把表字段直接定义成type使用的情况(这种type都是object type)。

二、使用步骤

1.本地type

不能有type body

代码如下:

1,table_type

    type my_tbl_type is table of char(10) index by pls_integer;
    var my_tbl_type;

2,varray_type

    type my_varr_type is varray(5) of char(10) index by pls_integer;
    var my_varr_type;

3,record_type

    type my_rec_type is record ( row1 char(10), row2 number(10,3) := 123.456);
    var my_rec_type;

4,ref_cursor_type

    type my_ref_cur_type_w is ref cursor;    --weak type
    type my_ref_cur_type_s is ref cursor return emp%rowtype;    --strong type
    cus1 my_ref_cur_type_w;
    cus2 my_ref_cur_type_s;
    cus3 sys_refcursor;  --weak type

2.object type

代码如下:

1,obj_table_type

    create or replace type my_obj_tbl_type force as table of varchar2(10);

   这里不能有index by,也不能有type body

2,obj_varray_type

    create or replace type my_obj_varr_type force as varray(5) of varchar2(10);

3,obj_obj_type

create or replace type my_obj_type force as object (

    lev integer,nm varchar2(100),

    constructor function my_obj_type (pi_l integer) return self as result,

    member procedure setLev(pi_lev integer),

    member function getLev return integer,

    member function to_string return varchar2

)
create or replace type body my_obj_type force as object (
    constructor function my_obj_type (pi_l integer) return self as result 
        as
    begin
        self.lev := pi_l;
        return;
    end my_obj_type;

    member procedure setLev(pi_lev integer)
    as
    begin
        self.lev := pi_l;
    end setLev;

    member function getLev return integer
    as
    begin
        return self.lev;
    end getLev;

    member function to_string return varchar2
    as
    begin
        return self.lev || self.nm;
   end to_string;

)

总结

具体使用后续更新......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值