トップページに戻る
次の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の代用