Welcome 微信登录

首页 / 数据库 / MySQL / 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 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   name52.用管道函数
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更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12本文永久更新链接地址