oracle function中可以返回多个值吗,类似于下图
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle function中可以返回多个值吗,类似于下图相关的知识,希望对你有一定的参考价值。
可以的哦,你可以吧多个值弄成一个对象,然后作为一个对象传出,如:create or replace type spell_code as object(spell varchar2(10),code number);
create or replace type t_spellcode is table of spell_code;
create or replace function f_getSpellcode return t_spellcode Pipelined
is
Begin
PIPE Row(spell_code('a', -20319));
PIPE Row(spell_code('ai', -20317));
PIPE Row(spell_code('an', -20304));
PIPE Row(spell_code('ang', -20295));
PIPE Row(spell_code('zuo', -10254));
Return;
end
执行完以上脚本,执行:select * from table(f_getSpellcode())
是不是看到就是多行记录哇,简单说明下,spell_code 这个是我想要返回一行对应的列记录,t_spellcode 这个可以是数组,里面可以存放多行,f_getSpellcode 函数里面返回的是t_spellcode 是多行,所以就达到目的了
你可以看一下我以前在一个项目中写的函数:http://piaoliupingblog.iteye.com/blog/1915579 参考技术A 不能返回多个值 但是能返回多个值组成的对象 把多个值定义成对象就可以了
Oracle中function和procedure的区别
Oracle中function和procedure的区别:
1). 可以理解函数是存储过程的一种
2). 函数可以没有参数,但是一定需要一个返回值,存储过程可以没有参数,不需要返回值
3). 函数return返回值没有返回参数模式,存储过程通过out参数返回值, 如果需要返回多个参数则建议使用存储过程
4). 在sql数据操纵语句中只能调用函数而不能调用存储过程
以上是关于oracle function中可以返回多个值吗,类似于下图的主要内容,如果未能解决你的问题,请参考以下文章