zoukankan      html  css  js  c++  java
  • 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); 

  • 相关阅读:
    解决php中Cannot send session cache limiter 的问题的方法 (转载)
    手机网页学习(转载)
    在PC上测试移动端网站和模拟手机浏览器的5大方法 (转载)
    php 中使用json(转载)
    String.format("%0"+length+"d", long)说明
    php查询一条数据 while少一条查询数据不显示
    mysql数据安装(装载)
    mysql File '/var/lib/mysql/txtdata/yz2014_1.txt' not found (Errcode: 13 "Permission denied")
    VS2015+Qt新建项目后出现红波浪线
    VS2015报错:无法打开头文件"windows.h"
  • 原文地址:https://www.cnblogs.com/Soprano/p/10659371.html
Copyright © 2011-2022 走看看