前言
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;
)
总结
具体使用后续更新......