ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 类型和结果集备忘

类型和结果集备忘

原创 Linux操作系统 作者:prt 时间:2009-09-25 10:48:52 0 删除 编辑

--存储过程返回结果集:
create or replace p_test(acr_cursor out sys_refcursor) as
begin
  open acr_cursor is select * from area;
end;
/
set serverout on size 100000;
var c refcursor;
exec p_test(:c);
print c;

--当然也可以先定一个游标类型:
create or replace package pkg_types as
  type tp_cursor is ref cursor;
end;
create or replace p_test(acr_cursor out pkg_types.tp_cursor) as
begin
  open acr_cursor is select * from area;
end;
/
set serverout on size 100000;
var c refcursor;
exec p_test(:c);
print c;
--使用plsql dev工具来定义var c refcursor;会提示REFCURSOR not supported错误。

--在包中使用
create or replace package types as
  type tp_cursor is ref cursor;
end;
/
CREATE OR REPLACE PACKAGE BODY pkg_test AS
  PROCEDURE get(as_areacode varchar2, acr_rc OUT myrctype) IS
    sqlstr VARCHAR2(500);
  BEGIN
    IF as_areacode is null THEN
      OPEN acr_rc FOR
        SELECT * FROM area;
    ELSE
      sqlstr := 'select *
            from areacode where areacode=:1';
      OPEN acr_rc FOR sqlstr
        USING as_areacode;
    END IF;
  END get;
END ;
/

--自定义struct类型    
create or replace type tp_user as object(  
       username varchar2(20),  
       sex varchar2(2)  
);  
 
--数组
--使用VARRAY时一定要先指定数组大小
 declare  
   type type_array is varray(10) of varchar2(20);  
   var_array type_array:=type_array('ggs','jjh','wsb','csl','dd','bb');  
 begin  
   for i in 1..var_array.count loop  
       dbms_output.put_line(var_array(i));  
   end loop;  
 end;

--类型使用
create or replace procedure P_1 as
   vi_id int;
   vs_username varchar2(32);
type vty_hcl is record(
   id          int,
   username    varchar2(32) );

type vtp_hcl_arr is table of vty_hcl index by binary_integer;
vt_hcl_arr vtp_hcl_arr;
begin
   select id,username bulk collect into vt_hcl_arr from tuser;
   for vi_i in 1 .. vt_hcl_arr.count loop
      vi_id        := vt_hcl_arr(vi_i).id;
      vs_username  := vt_hcl_arr(vi_i).username;
   end loop;
end ;

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/559237/viewspace-615531/,如需转载,请注明出处,否则将追究法律责任。

上一篇: shell 基础
下一篇: 表解锁的处理
请登录后发表评论 登录
全部评论

注册时间:2008-05-09

  • 博文量
    61
  • 访问量
    182049