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

  • 相关阅读:
    mysql mgr集群部署
    单节点的cratedb添加一个节点组成一个集群
    单节点的es添加另外一个节点组成主从集群
    mongodb3.0.1副本集安装部署(仲裁节点模式)
    mongodb从库的登陆执行命令不用每次输入slaveOk
    redis4.0集群部署
    ssdb双主部署
    threaded_execution参数开启的情况下导致ogg无法注册
    cratedb备份迁移到新的机器
    cratedb备份和恢复
  • 原文地址:https://www.cnblogs.com/Soprano/p/10659371.html
Copyright © 2011-2022 走看看