oracle 变量 表,转载 ORACLE中实现表变量的方法

经常看到SQLSERVER 中用表变量类型的方式就能做到缓存一个比较大的中间结果,

然后再对这个表变量做处理,非常方便,那么ORACLE有这种表变量的方式处理中间结果么

实验后发下你用如下方法可以起到SQL SERVER里表变量的作用

1 创建基础数据表

create table T_TEST_PIP(

ID VARCHAR(10),

TT DATE,

DATA_ VARCHAR2(60)

)

SELECT *

FROM T_TEST_PIP

2 创建记录行类型

create or replace type row_data as object ( id number,

time date,

data varchar2(60)

);

3 创建行集合类型

create or replace type rows_array as table of row_data;

4 封装查询结果到行集合类型里

create or replace function f_test_array

(

n in number default null

)

return rows_array as --RETURN out_rec_set PIPELINED IS

t_array rows_array := rows_array();

--id1 number;

--time1 date;

--data1 varchar2(60);

BEGIN

FOR i in 1..3

LOOP

t_array.extend();

--把一个相对复杂SQL查询出的结果,放入行集合类型

SELECT

ROW_DATA (T.ID ,T.TT ,CASE

WHEN T.DATA_ IS NULL

THEN ''

ELSE T.DATA_

END)

INTO

t_array(i)

FROM

T_TEST_PIP T

WHERE

id = i

GROUP BY

T.ID

, T.TT

, T.DATA_

;

END LOOP;

dbms_output.put_line('test '

||t_array(1).ID);

return t_array;

END;

5 从行集合类型里取数据

select * from table(f_test_array());

6 应用行集合类型和其他表联合

SELECT *

FROM table(f_test_array()) T1

,table(f_test_array()) T2

,T_TEST_PIP T3

WHERE T1.ID = T2.ID

AND T1.ID = T3.ID ;

向oracle中的表插入数据的方法

向oracle中的表插入数据的方法有以下几种: 假设表名为User 第一种方法:select t.*,rowid from User t;-->点击钥匙那个标记就可向表中添加数据 第二种方法:s ...

Oracle中的 UPDATE FROM 解决方法

转:http://www.cnblogs.com/JasonLiao/archive/2009/12/23/1630895.html Oracle中的 UPDATE FROM 解决方法 在表的更新操作 ...

(转)DedeCms Runphp 标签中调用其他变量的方法

DedeCms Runphp 标签中调用其他变量的方法 我们都知道,在DedeCMS中是可以使用PHP的,常见的方法就是if else了,例如模板制作中,我们需要对来源和作者进行判断,如果为空,则提示 ...

Oracle中对列加密的方法

Oracle中对列加密的方法 2011-12-22 17:21:13 分类: Linux Oracle支持多种列加密方式: 1,透明数据加密(TDE):create table encrypt_col ...

如何在Oracle中建立表和表空间?

1.建表空间 ORACLE中,表空间是数据管理的基本方法,所有用户的对象要存放在表空间中,也就是用户有空间的使用权,才能创建用户对象.否则是不充许创建对象,因为就是想创建对象,如表,索引等,也没有地方 ...

Oracle 导出空表的新方法(彻底解决)

背景 使用Exp命令在oracle 11g 以后不导出空表(rowcount=0),是最近在工作中遇到一个很坑的问题,甚至已经被坑了不止一次,所以这次痛定思痛,准备把这个问题彻底解决.之所以叫新方法, ...

清空SQL Server数据库中所有表数据的方法(转)

清空SQL Server数据库中所有表数据的方法 其实删除数据库中数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除操作可能陷入 ...

【转】Oracle中dual表的用途介绍

原文:Oracle中dual表的用途介绍 [导读]dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录.我们可以用它来做很多事情. dual是一个虚拟表, ...

清空SQL Server数据库中所有表数据的方法

原文:清空SQL Server数据库中所有表数据的方法 其实删除数据库中数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除操作可 ...

随机推荐

[CSS]复选框单选框与文字对齐问题的研究与解决.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值