Oracle中函数如何返回结果集

Oracle中,用函数返回结果集有时候要用到,下面是demo:


1

2

3

4

5

6

7

create or replace type t_test as object

(

id integer,

create_time date,

object_name varchar2(60)

);

create or replace type t_test_table as table of t_test;

1.用数组的方式


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

create or replace function f_test(n in number default null)

return t_test_table as

v_test t_test_table := t_test_table();

begin

for i in 1 .. n loop

v_test.extend();

v_test(v_test.count) := t_test(i, sysdate, ‘name‘ || i);

end loop;

return v_test;

end f_test;

/

SQL> select * from table(f_test(5));

ID CREATE_TIME OBJECT_NAME

-------- -------------- -------------

1 07-4月 -15 name1

2 07-4月 -15 name2

3 07-4月 -15 name3

4 07-4月 -15 name4

5 07-4月 -15 name5

2.用管道函数


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

create or replace function f_test_pipe(n in number default null)

return t_test_table

PIPELINED as

v_test t_test_table := t_test_table();

begin

for i in 1 .. nvl(n, 100) loop

pipe row(t_test(i, sysdate, ‘name‘ || i));

end loop;

return;

end f_test_pipe;

/

SQL> select * from table(f_test_pipe(5));

ID CREATE_TIME OBJECT_NAME

---------- -------------- ----------------

1 07-4月 -15 mc1

2 07-4月 -15 mc2

3 07-4月 -15 mc3

4 07-4月 -15 mc4

5 07-4月 -15 mc5

时间: 2024-10-26 15:06:15

Oracle中函数如何返回结果集的相关文章

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_Te

oracle中函数和存储过程的区别和联系【转载竹沥半夏】

oracle中函数和存储过程的区别和联系[转载竹沥半夏] 在oracle中,函数和存储过程是经常使用到的,他们的语法中有很多相似的地方,但也有自己的特点.刚学完函数和存储过程,下面来和大家分享一下自己总结的关于函数和存储过程的区别. 一.存储过程 1.定义 存储过程是存储在数据库中提供所有用户程序调用的子程序,定义存储过程的关键字为procedure. 2.创建存储过程 create [or replace] procedure 存储过程名 [(参数1 类型,参数2 out 类型……)] as

oracle中函数和存储过程的区别和联系

oracle中函数和存储过程的区别和联系 在oracle中,函数和存储过程是经常使用到的,他们的语法中有很多相似的地方,但也有自己的特点.刚学完函数和存储过程,下面来和大家分享一下自己总结的关于函数和存储过程的区别. 一.存储过程 1.定义 存储过程是存储在数据库中提供所有用户程序调用的子程序,定义存储过程的关键字为procedure. 2.创建存储过程 create [or replace] procedure 存储过程名 [(参数1 类型,参数2 out 类型……)] as 变量名 类型:

Oracle 中,函数如何返回结果集

在Oracle中,用函数返回结果集有时候要用到,下面是demo: create or replace type t_test as object ( id integer, create_time date, object_name varchar2(60) ); create or replace type t_test_table as table of t_test; 1.用数组的方式 create or replace function f_test(n in number defaul

oracle创建存储过程并返回结果集(附C#调用代码)

使用存储过程中,最常用的莫过于查询数据表,并返回结果集. 在SQL SERVER 中,这类操作最简单,通过简单的select * from xx 即可完成.但是在Oracle中并不支持这种写法,那么我们怎么实现跟SQL SERVER同样的功能呢?且看以下代码: create or replace procedure sp_getdept (rep_type in varchar2,sel in varchar2,result out sys_refcursor) as seq varchar2(

oracle中函数

一:前言 最近决定每天都把知识点总结下,然后每个星期把知识点在进行分类发表日志. 二:The Question (1):在oracle中进行年龄的计算,知道出生日期进行计算后截取,本来是一个很简单的函数,但是我觉得对于这些东西真的是用多了自己就记住了所以我还是记载下来,不然我每次都要进行查找,还是很麻烦的. 计算年龄的函数: Trunc((sysdate-CSRQ)/365,0) as nl这个函数的形式:Trunc(number,decimals);该函数是返回处理后的值.和ROUND相似,但

关于 Shell中函数的返回值 问题

# !/bin/sh sum() { echo $(($1+$2)) return $(($1-$2)) } sum $1 $2 c=$(sum $1 $2) echo $? echo $c 执行命令:./bashTest 11 1 运行结果是: 12 -- sum $1 $2的结果 10 -- echo $?的结果,因为return的值为10 12 --  echo $c的结果,值为12,所以c并不会被附上return的值,echo $c时调用了sum函数,所以打印了12 我们对shell中的

ctypes获取扩展模块中函数的返回值

ctypes获取返回值 我们前面已经看到了,通过ctypes像扩展模块中的函数传参时是没有问题的,但是我们如何拿到返回值呢?我们之前都是使用printf直接打印的,但是这样显然不行,我们肯定是要拿到返回值去做一些别的事情的.那么我们看看如何使用ctypes获取函数的返回值. 获取整型返回值 int test1(int a, int b) { int c; c = a + b; return c; } void test2() { } 我们定义了两个函数,下面编译成dll文件,dll文件名叫做mm

关于JS中函数的返回值的一点死思考

在Javascript中,函数总是会有一个返回值.即使我们没有显示的使用 "return",程序也会隐式的返回一个 "undefined". 通过下面的小demo即可理解. demo1 function fn(){ return 1; } fn(); 运行结果:1 demo2 function fn(){ console.log(1); } fn(); 运行结果:1 undefined