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 '111'
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 ;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/750077/viewspace-2134222/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- OCI中繫結變數的實現例子變數
- Oracle中的替換變數,&變數名,&&變數名說明Oracle變數
- oracle中通過decode實現行變列的二維表統計展示Oracle
- 樹結構表遞迴查詢在ORACLE和MSSQL中的實現方法遞迴OracleSQL
- SQL Server中的臨時表和表變數SQLServer變數
- 樹結構表遞迴查詢在ORACLE和MSSQL中的實現方法 [續]遞迴OracleSQL
- Oracle10g實現只讀表的N種方法Oracle
- JavaScript中變數提升是什麼?如何實現?JavaScript變數
- 表變數和臨時表的差別 (以前把表變數叫成變數表了,哎。。。)變數
- C可變引數的實現
- 三種方法實現:獲取 url 中的引數
- SQL Server中臨時表與表變數的區別SQLServer變數
- MSSQL資料庫映象在Oracle中的實現方法SQL資料庫Oracle
- 試驗Oracle中實現行列轉換的方法(轉)Oracle
- Python中負數變成正數常用的方法!Python
- smarty 雙引號中嵌入變數的方法變數
- Oracle獲取繫結變數的各種方法Oracle變數
- oracle中的全域性環境變數配置Oracle變數
- 淺談php變數的實現-PHPPHP變數
- Java中變數之區域性變數、本類成員變數、父類成員變數的訪問方法Java變數
- Java中的類(好似結構體) 物件(好似指標變數)變數 方法Java結構體物件指標變數
- oracle裡面的幾個環境變數表Oracle變數
- 介面回撥的原理:介面變數 呼叫 被類實現的介面的方法變數
- javascript中對變數型別的判斷方法JavaScript變數型別
- Linux中修改環境變數PATH的方法Linux變數
- 函式中的私有變數和特權方法函式變數
- c++中的變數型別_C ++中的變數C++變數型別
- 報表合計需求的實現方法
- oracle10G的表分割槽與繫結變數Oracle變數
- Oracle中spool命令實現的兩種方法比較-入門Oracle
- 15 個變數和方法命名的最佳實踐變數
- 【Golang】基於beego/orm實現相同表結構不同表名的分表方法實現GolangORM
- ORACLE將普通錶轉變為分割槽表方法Oracle
- Oracle中取固定記錄數的方法薦Oracle
- uboot環境變數實現分析boot變數
- Java中實現不可變MapJava
- JS中的變數JS變數
- awk中的變數變數