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

时间: 2024-11-12 18:06:25

Oracle学习(二)table函数的用法的相关文章

Oracle中使用Table()函数解决For循环中不写成 in (l_idlist)形式的问题

转: Oracle中使用Table()函数解决For循环中不写成 in (l_idlist)形式的问题 在实际PL/SQL编程中,我们要对动态取出来的一组数据,进行For循环处理,其基本程序逻辑为: 1 2 3 4 5 6 7 8 9 10 11 12 create or replace procedure getidlist is   l_idlist varchar2(200); begin   l_idlist:='1,2,3,4';   for brrs in (select * fro

Oracle学习(二):过滤和排序

1.知识点:可以对照下面的录屏进行阅读 SQL> --字符串大小写敏感 SQL> --查询名叫KING的员工信息 SQL> select * 2 from emp 3 where ename = 'KING'; SQL> --日期格式敏感 SQL> --查询入职日期为17-11月-81的员工 SQL> select * 2 from emp 3 where hiredate='17-11月-81'; --正确例子 SQL> ed 已写入 file afiedt.b

ORACLE学习05-单行函数

一.字符函数 1,字符串转换 -- lower() 将字符串转成小写 select lower('HELLO WORLD') from dual;   -- upper() 将字符串转大写 select upper('hello world') from dual;   -- initcap() 将字符串首字母大写 select initcap('hEllo woRld') from dual; 2,字符串截取 -- substr(a,b) 从a中,第b位开始取,取右边所有的字符 select

ORACLE学习二

内存区域和后台进程 共享池 共享池是最复杂的SGA结构,它有许多子结构,我们来看看常见的几个共享池组件: 1.库缓存:库缓存这块内存区域会按已分析的格式缓存最近执行的代码,这样,同样的sql代码多次执行的时候,就不用重复地去进行代码分析,可以很大程度上提高系统性能. 2.数据字典缓存:存储oracle中的对象定义(表,视图,同义词,索引等数据库对象),这样在分析sql代码的时候,就不用频繁去磁盘上读取数据字典中的数据了 3.PL/SQL区:缓存存储过程.函数.触发器等数据库对象,这些对象都存储在

Oracle的REGEXP INSTR函数简单用法

REGEXP_INSTR函数让你搜索一个正则表达式模式字符串.函数使用输入字符集定义的字符进行字符串的计算. 它返回一个整数,指示开始或结束匹配的子位置,这取决于return_option参数的值.如果没有找到匹配,则函数返回0. 语法 Oracle数据库中的REGEXP_INSTR函数的语法是: REGEXP_INSTR (source_char, pattern [, position [, occurrence [, return_option [, match_parameter ] ]

oracle学习 二(持续更新中)

oracle数据库的启动停止 以oracle用户身份登录 登录后输入以下命令: oracle-> sqlplus /nolog SQL*Plus: Release 9.2.0.1.0 - Production on 星期一 4月 26 09:42:00 2004 Copyright (c) 1982, 2002>>, Oracle Corporation.  All rights reserved. SQL>; connect /as sysdba 已连接. SQL>; 先说

oracle学习笔记单行函数

单行函数 只对一行进行变换  每行返回一个结果 单行函数分 字符.数值.日期.转换.通用 字符函数:大小写控制函数.字符控制函数 大小写控制函数:lower, upper, initcap 字符控制函数:concat,substr,length,instr,lpad|rpad,trim,replace lower,upper,initcap select lower('SQL') from dual; --结果 sql select upper('sql') from dual; --结果 SQ

oracle学习(二)

关联查询 两种形式 select e.empno,e.ename,m.empno,m.ename from emp e,emp m where e.mgr=m.empno(+); +表示作为附表查询 -- 左表作为主表 select e.empno,e.ename,m.empno,m.ename from emp e left join emp m on e.mgr=m.empno -- right join emp 右表作为主表 子查询 分页 oracle中分页 rownum 表示行号,实际上

trim()函数的用法

在oracle中,trim()函数的用法有,leading 开头字符,trailing 结尾字符,both 开头和结尾字符,如下: trim(leading || trailing || both '将要被替换掉的字符" from "将要被替换的字符串") 1.trim函数去除指定的开头字符 select trim(leading 'x' from 'xday') as strTemp from tableName ; 2.trim函数去除指定的结尾字符 select tri