如何oracle function 返回结果集
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何oracle function 返回结果集相关的知识,希望对你有一定的参考价值。
例:
select oraclefunc('aaa,bbb') 列名 from dual;
返回值为
列名
aaa
bbb
请帮写下oraclefun这个函数,谢谢!!!
好用多加分.
需要用函数,存储过程也不会。
select xx from dual好像本身只能返回一行数据,无法返回多行数据
以下是我做一个返回游标的函数。
create or replace package types as
type mytype is ref cursor;
end;
create or replace function oraclefunc(col_in varchar)
return types.mytype is
mycursor types.mytype;
restr varchar2(4096);
begin
restr:=trim(col_in);
restr:=replace(restr,',',''' as 列名 from dual union select ''');
restr:=''''||restr||'''';
restr:='select '||restr;
restr:=restr||' as 列名 from dual';
open mycursor for restr;
return mycursor;
end; 参考技术A create or replace package pkg_test as
/* 定义ref cursor类型
*/
type myrctype is ref cursor;
--函数申明
function get(p_a VARCHAR2,p_b VARCHAR2) return myrctype;
end pkg_test;
--body
CREATE OR REPLACE package body pkg_test as
--函数体
FUNCTION get(p_a VARCHAR2,p_b VARCHAR2) return myrctype is
rc myrctype; --定义ref cursor变量
begin
open rc for select p_a FROM dual UNION SELECT p_b FROM dual;
return rc;
end get;
end pkg_test;
执行。。
SELECT pkg_test.get('a','b') FROM dual;
得到结果是:
----------------------------------=
得到一个游标,然后可以通过游标来得到结果集,结果集如下:
1 a
2 b 参考技术B wastelandxf的回答很好了,建议采纳! 参考技术C 为什么要使用函数呢?用存储过程不行?
Oracle 存储过程返回结果集
【中文标题】Oracle 存储过程返回结果集【英文标题】:Oracle stored procedure to return a result set 【发布时间】:2012-10-27 05:40:08 【问题描述】:我是 Oracle 的新手,我需要编写一个返回结果集的存储过程。将使用链接服务器从 SQL Server 调用存储过程。 我知道我可以使用 ref 游标从 PL/SQL 服务器返回结果集,但我也看到存储过程返回某种数组(例如声明为数字表),然后将其与结果一起返回。 这样做的正确方法是什么?
【问题讨论】:
我认为您将从 Java 调用您的过程。在这种情况下,过程将直接从 Oracle 或通过 SQL Server 调用? 将使用链接服务器从 SQL Server 调用该过程。 【参考方案1】:经过对 Oracle 论坛的一些调查和我自己的测试...... 参考光标是合适的方式。 使用 oracle oledb 提供程序时,关联数组将无法正常工作。
【讨论】:
要记住的一点是,如果您的查询跨过 oracle 服务器上的数据库链接,则不能返回引用游标。这两个限制加在一起是超级痛苦的。 嗯,它将通过 SQL Server 中的链接服务器,但直接来自 Oracle,我已经对其进行了测试,并且确实有效。 抱歉,我不是很清楚,如果您在 Oracle 中通过数据库链接加入或查询,则无法返回引用游标。以上是关于如何oracle function 返回结果集的主要内容,如果未能解决你的问题,请参考以下文章