トップページに戻る    次のSQLパズルへ    前のSQLパズルへ

2-3-9 自然数の連番を持つ集合を作成

SQLパズル

1から10までの自然数の連番を持つ集合を作成する。

出力結果
--
 1
 2
 3
 4
 5
 6
 7
 8
 9
10


SQL

--■■■階層問い合わせを使う方法(10g以降)■■■
select RowNum from dual
connect by Level <= 10;

--■■■dict表を使う方法■■■
select RowNum from dict where RowNum <= 10;

--■■■all_catalog表を使う方法■■■
select RowNum from all_catalog where RowNum <= 10;

--■■■all_objects表を使う方法■■■
select RowNum from all_objects where RowNum <= 10;


解説

connect by Level <= 10
と指定して、無限ループを防ぎつつ行を作成してます。

Oracle9iだとうまくいかないようです。

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
dict,all_catalog,all_objects
は権限がなくてもアクセスできるデータディクショナリです。

件数は下記のとおりです。

select
(select version from v$instance) as "version",
(select count(*) from dict) as "dict",
(select count(*) from all_catalog) as "all_catalog",
(select count(*) from all_objects) as "all_objects"
from dual;

version   ■dict■all_catalog■all_objects
----------■----■-----------■-----------
10.2.0.1.0■1870■      25324■      49232

10-172 dual表からの連番の作成
model句06 all_objectsやall_catalogやdictの代用