成都网站建设设计

将想法与焦点和您一起共享

oracle终端怎么返回,oracle 函数返回值 列表

oracle 查询函数怎么返回查询结果

返回cursor的话,那么必须要cursor的手段来处理,不能作为查询语句的目的表。

成都创新互联是少有的成都网站制作、网站建设、营销型企业网站、小程序开发、手机APP,开发、制作、设计、卖链接、推广优化一站式服务网络公司,从2013年创立,坚持透明化,价格低,无套路经营理念。让网页惊喜每一位访客多年来深受用户好评

如果需要在函数返回一个可以供查询语句使用的结果集,那么该函数的返回类型应该定义为一个索引表类型(一个table类型),然后在查询语句中使用table函数将函数返回的索引表转换成查询可以使用的目的表。示例如下:

1. 创建返回索引表所需的类型

create or replace type type_rec is object (idx integer, user_name varchar2(50));

create or replace type type_tb is table of type_rec;

2. 创建函数

create or replace function fn_return_tb

return type_tb

is

o_tb type_tb := type_tb();

i number := 0;

begin

for v_rec in (select 1 as idx, 'Andy' as user_name from dual

union select 2, 'Jack' from dual

union select 3, 'Paul' from dual) loop

o_tb.extend;

i := i + 1;

o_tb(i) := type_rec (v_rec.idx, v_rec.user_name);

end loop;

return o_tb;

end fn_return_tb;

3. 调用函数

select s.*

from table(fn_return_tb()) s;

Oracle存储过程怎么返回结果?

这个存储过程你可以在TEST的环境下查看结果,不过你需要隐式游标来进行操作,那样才能看到,具体步骤如下:

1、首先我们要借助游标,因此需要先定义一个返回类型的游标

create or replace package type_difinition

as

type mycursor is ref cursor;

end type_difinition;

2、改写你的存储过程,要想查看执行SQL后结果需要一个返回参数,这个参数即上面定义的游标

类型

create or replace procedure select_pro(

p_result out type_difinition.mycursor -- 返回结果

)

is

syn_sql varchar2(200) default '';

begin

syn_sql := 'select * from emp';

-- 此处打开游标,并把需执行的SQL赋值给游标

open p_result for syn_sql;

end select_pro;

3、执行编译通过后,右键点击存储过程的名字,跳出框,选择Test一项,进入Test界面

4、点击编译、再点击执行

5、Test界面的底部界面,有个Variable Type value的列表,此时你可以点击Value值里面的

... 按钮,即可查看结果,由于不怎么会应用这个编辑器,本想把图片上传给你,如有不解,再详问,希望回答对楼主有帮助

oracle 如何返回多条记录

Oracle的存储过程和函数并不能直接返回查询结果集(并非不能,“没有做不到,只有想不到”,呵)。也就是说在Oracle存储过程或函数中直接写查询返回结果集是非法的(在SQL Server是可以的)。

与SQL Server的存储过程和函数均可以返回结果集不同的是,PL/SQL的存储过程和函数均不直接提供返回数据集的方法,但可以通过返回类型对象来实现返回数据集的效果。具体思路为:

(1)创建包头,在其中声明类型和存储过程,类型应该引用游标;

(2)创建包体,定义存储过程,执行查询,将查询得到的结果集以游标句柄的形式返回。

说明:游标分为显示游标和隐式游标,任何查询结果默认都提供隐式游标,当前方案的重点在于使用游标取得查询结果的句柄,由于游标被引用为类型,通过返回类型,即等效于(并不等同)返回数据集。

具体的案例如下:

--创建包头

create or replace package mypackage1

as

--声明类型,并引用游标

type cursorType is ref cursor;

--声明存储过程,两个输入参数,一个输出参数,输出游标类型数据

procedure prcGetGlobalAddress

(

pos1 integer, --分页查询的下限

pos2 integer, --分页查询的上限

cur in out mypackage1.cursorType --输出参数,数据类型为引用游标的类型

);

end mypackage1;

--创建包体

create or replace package body mypackage1

as

--定义存储过程

procedure prcGetGlobalAddress

(

pos1 integer,

pos2 integer,

cur in out mypackage1.cursorType

)

as

begin

--返回得到分页查询结果集的游标句柄

open cur for

select *

from ( select a.*,rownum rn

from ( select *

from tblsys_globaladdress) a

where rownum=pos2)

where rn =pos1;

end prcGetGlobalAddress;

end mypackage1;

如果你只是返回几个值,请用OUT标记输出参数,查询代码为

SELECT SName INTO stuname FROM Student WHERE SID = stuid;

记得一定要用INTO关键字。

总之一句话,在Oracle中,在存储过程和函数中都不能直接返回查询结果集(哪怕只有1行1列也不行,这是绝对的),但可以通过变通方式实现。

oracle如何返回四种结果

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

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

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

以函数return为例,存储过程只需改为out参数即可,在oracle 10g测试通过.

(1) 返回游标:

return的类型为:SYS_REFCURSOR

之后在IS里面定义变量:curr SYS_REFCURSOR;

最后在函数体中写:

open cur for

select ......;

return cur;


网站栏目:oracle终端怎么返回,oracle 函数返回值 列表
标题链接:http://chengdu.cdxwcx.cn/article/hecpop.html