• oracle table()函数


    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); 

  • 相关阅读:
    【连载】【FPGA黑金开发板】Verilog HDL那些事儿低级建模的基础实例(七)
    【连载】【黑金动力社区原创力作】《液晶驱动与GUI 基础教程》 第二章 颜色模型(三)
    更新 EVGA86 模块手册
    【连载】【FPGA黑金开发板】Verilog HDL那些事儿低级建模的基础(二)
    NIOS II JTAG UART通讯
    【连载】【FPGA黑金开发板】Verilog HDL那些事儿听听低级建模的故事(五)
    NIOS II LCD上面显示时间
    治疗Quartus绝症的方法
    【连载】【黑金动力社区原创力作】《液晶驱动与GUI 基础教程》 序言(一)
    《NIOSII那些事儿》REV6.0 最新版发布
  • 原文地址:https://www.cnblogs.com/Soprano/p/10659371.html
Copyright © 2020-2023  润新知