zoukankan      html  css  js  c++  java
  • Oracle学习(二)table函数的用法

    原文地址:

    http://blog.csdn.net/lne818/article/details/3042250

    PL/SQL表---table()函数用法

    /*

    PL/SQL表---table()函数用法:
    利用table()函数,我们可以将PL/SQL返回的结果集代替table。

    oracle内存表在查询和报表的时候用的比较多,它的速度相对物理表要快几十倍。

    simple example:

    1、table()结合数组:

    */

    create or replace type t_test as object(
    id integer,
    rq date,
    mc varchar2(60)
    );

    create or replace type t_test_table as table of t_test;

    create or replace function f_test_array(n in number default null) return t_test_table
    as
    v_test t_test_table := t_test_table();
    begin
    for i in 1 .. nvl(n,100) loop
    v_test.extend();
    v_test(v_test.count) := t_test(i,sysdate,'mc'||i);
    end loop;
    return v_test;
    end f_test_array;
    /

    select * from table(f_test_array(10));

    select * from the(select f_test_array(10) from dual);

    /*

    2、table()结合PIPELINED函数:

    */

    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,'mc'||i));
    end loop;
    return;
    end f_test_pipe;
    /

    select * from table(f_test_pipe(20));

    select * from the(select f_test_pipe(20) from dual);

    /*

    3、table()结合系统包:

    */

    create table test (id varchar2(20));
    insert into test values('1');
    commit;
    explain plan for select * from test;
    select * from table(dbms_xplan.display);

    PL/SQL表---table()函数用法

    /*

    PL/SQL表---table()函数用法:
    利用table()函数,我们可以将PL/SQL返回的结果集代替table。

    oracle内存表在查询和报表的时候用的比较多,它的速度相对物理表要快几十倍。

    simple example:

    1、table()结合数组:

    */

    create or replace type t_test as object(
    id integer,
    rq date,
    mc varchar2(60)
    );

    create or replace type t_test_table as table of t_test;

    create or replace function f_test_array(n in number default null) return t_test_table
    as
    v_test t_test_table := t_test_table();
    begin
    for i in 1 .. nvl(n,100) loop
    v_test.extend();
    v_test(v_test.count) := t_test(i,sysdate,'mc'||i);
    end loop;
    return v_test;
    end f_test_array;
    /

    select * from table(f_test_array(10));

    select * from the(select f_test_array(10) from dual);

    /*

    2、table()结合PIPELINED函数:

    */

    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,'mc'||i));
    end loop;
    return;
    end f_test_pipe;
    /

    select * from table(f_test_pipe(20));

    select * from the(select f_test_pipe(20) from dual);

    /*

    3、table()结合系统包:

    */

    create table test (id varchar2(20));
    insert into test values('1');
    commit;
    explain plan for select * from test;
    select * from table(dbms_xplan.display);

  • 相关阅读:
    Java线程安全和非线程安全
    时间戳获取(周,年,月,日)
    spring+spring 日志输出
    Spring+springMvc+Mybatis
    关于mysql处理百万级以上的数据时如何提高其查询速度的方法
    Tomcat 详解
    理解 $_POST、$_GET 、php://input
    php编译参数注解--不明白许多参数的作用 慎用 –with-curlwrappers参数【转载】
    centos6.5编译安装php[整理一]
    ubuntu16.04 安装chrome 和 phpstorm
  • 原文地址:https://www.cnblogs.com/zyhblogs/p/3990404.html
Copyright © 2011-2022 走看看