Oracle中函数/过程返回结果集的几种方式

Oracle中函数/过程返回结果集的几种方式:
函数return为例,存储过程只需改为out参数即可,在oracle 10g测试通过.
(1) 返回游标:
return的类型为:SYS_REFCURSOR
之后在IS里面定义变量:curr SYS_REFCURSOR;
最后在函数体中写:
open cur for
select ......;
return cur;
例:

CREATE OR REPLACE FUNCTION A_Test(
                orType varchar2
        )RETURN SYS_REFCURSOR
        is
               type_cur SYS_REFCURSOR;
        BEGIN
            OPEN type_cur FOR
                    select col1,col2,col3 from testTable ;
                  RETURN  type_cur;
        END;

(2)返回table类型的结果集:

首先定义一个行类型:

CREATEORREPLACETYPE"SPLIT_ARR"ASOBJECT(NowStrvarchar2(18))

其次以此行类型定义一个表类型:

CREATETYPE"SPLIT_TAB"TABLEofsplit_arr;

定义函数(此函数完成字符串拆分功能):

FUNCTION GetSubStr( str in varchar2,--待分割的字符串 splitchar varchar2 分割标志 ) return split_tab IS restStr varchar2(2000) default GetSubStr.str;剩余的字符串 thisstr 18);取得的当前字符串 indexStr int;临时存放分隔符在字符串中的位置 v split_tab := split_tab(); 返回结果 begin dbms_output.put_line(restStr); while length(restStr) != 0 LOOP <<top>> indexStr := instr(restStr,splitchar); 从子串中取分隔符的第一个位置 if indexStr = 0 and length(restStr) 0 then在剩余的串中找不到分隔符 begin v.extend; v(v.count) := split_arr(Reststr); return v; end; end if; 1 -第一个字符便为分隔符,此时去掉分隔符 begin restStr := substr(restStr,2); goto top; if length(restStr) or restStr is null then return v; if; v.extend; thisstr :1,indexStr - 1); 取得当前的字符串 restStr :+ 1);-取剩余的字符串 v(v.= split_arr(thisstr); END LOOP; return v; end;

在PL/sql developer中可以直接调用

cursorstrcuris

  selectNowStrfromTable(GetSubStr('111,222,333,',',0)">));

(3)以管道形式输出:

create type row_type as object(a 10),v 10));定义行对象 create type table_type as table of row_type; 定义表对象 create or replace function test_fun( a varchar2 ) return table_type pipelined is v row_type;定义v为行对象类型 begin for thisrow in (select a,b from mytable where col1=a and col2 = b) loop v := row_type(thisrow.a,thisrow.b); pipe row (v); end loop; return; end; select * from table(test_fun('123',0)">456'));

相关文章

Java Oracle 结果集是Java语言中处理数据库查询结果的一种方...
Java AES和Oracle AES是现代加密技术中最常使用的两种AES加密...
Java是一种广泛应用的编程语言,具备可靠性、安全性、跨平台...
随着移动互联网的发展,抽奖活动成为了营销活动中不可或缺的...
Java和Oracle都是在计算机领域应用非常广泛的技术,他们经常...
Java 是一门非常流行的编程语言,它可以运行于各种操作系统上...