トップページに戻る
次のSQLパズルへ
前のSQLパズルへ
8-21 sys.odciVarchar2Listとsys.odciNumberList
SQLパズル
sys.odciVarchar2Listとsys.odciNumberListの紹介
SQL
--■■■sys.odciVarchar2List■■■
select * from table(sys.odciVarchar2List('AAA','BBB',null,'DDD'))
where column_value is not null;
COLUMN_VALUE
------------
AAA
BBB
DDD
--■■■sys.odciNumberList■■■
select RowNum ID, column_value X
from table(sys.odciNumberList(100,200));
ID X
-- ---
1 100
2 200
--■■■sys.odciDateList■■■
select * from table(sys.odciDateList(sysdate,date '2008-10-10',null,date '2009-12-31'))
where column_value is not null;
COLUMN_VALUE
------------
09-01-07
08-10-10
09-12-31
解説
スカラーサブクエリを引数に使ったりとか、
テストデータを作るのに使えそうですね。
US-OTNのスレッド
マニュアル ODCIDateList,ODCINumberList,ODCIVarchar2List(英語)
マニュアル ODCIDateList,ODCINumberList,ODCIVarchar2List
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
COLUMN_VALUE疑似列
>キーワードCOLUMN_VALUEは、
>列または属性名を持たない内部のネストした表のスカラー値に対して
>Oracleデータベースが生成する名前です。
Oracle10gで簡易なUnPivotを行うこともできます。
create table ODCITest(key,column1,column2,column3) as
select 1,22,33,44 from dual union all
select 2,55,66,77 from dual union all
select 3,88,99,11 from dual;
select key,COLUMN_VALUE as newCol
from ODCITest,
table(sys.odciNumberList(column1,column2,column3));
key newCol
--- ------
1 22
1 33
1 44
2 55
2 66
2 77
3 88
3 99
3 11
---------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 24504 | 1292K| 86 (0)| 00:00:02 |
| 1 | NESTED LOOPS | | 24504 | 1292K| 86 (0)| 00:00:02 |
| 2 | TABLE ACCESS FULL | ODCITEST | 3 | 156 | 3 (0)| 00:00:01 |
| 3 | COLLECTION ITERATOR CONSTRUCTOR FETCH| | 8168 | 16336 | 28 (0)| 00:00:01 |
---------------------------------------------------------------------------------------------------