クエリ結果が1ページサイズに収まらない時、複数のブロックに分かれて出力されるが、
まとめて出力させたい場合がある。そんな時 SQL*Plus のシステム変数 pagesize を
使えば、1ページサイズあたりの行数を変更できる。

構文

SET PAGES[IZE] { 14 | n }

※ [] 内は、省略可能。

デフォルト

SQL> show pagesize
pagesize 14

ただし データ行 = 14 とはならないため注意。この値には列ヘッダや、
– (ハイフン)の区切り、ブランク行、その他ページタイトル等も含まれる。

例えば12行データを返すクエリをデフォルト設定のまま
実行した場合、以下のようになる。

SQL> select file_name from dba_data_files;

FILE_NAME
--------------------
/oradata/system01.dbf
/oradata/sysaux01.dbf
/oradata/undotbs01.dbf
/share/prftbs01.dbf
/share/prftbs02.dbf
/share/csptbs01.dbf
/share/csptbs02.dbf
/share/invtbs01.dbf
/share/invtbs02.dbf
/share/users01.dbf
/share/users02.dbf

FILE_NAME
--------------------
/share/users03.dbf

12行が選択されました。

1行目:空白行
2行目:列名
3行目:区切り線
4~14行目:データ(11件)

pagesize で指定された行数を上回ったため、次ページに1件持ち越されて表示された。
つまり、実データが使用する行数は Pagesize – 3 ということになる。

変更

SQL> set pagesize 15

変更を確認

SQL> show pagesize
pagesize 15

変更後

SQL> select file_name from dba_data_files;

FILE_NAME
--------------------
/oradata/system01.dbf
/oradata/sysaux01.dbf
/oradata/undotbs01.dbf
/share/prftbs01.dbf
/share/prftbs02.dbf
/share/csptbs01.dbf
/share/csptbs02.dbf
/share/invtbs01.dbf
/share/invtbs02.dbf
/share/users01.dbf
/share/users02.dbf
/share/users03.dbf

12行が選択されました。

システム変数 linesize などと併用することが多く、慣れればコマンド画面でも
かなり見やすくはなるが、列数やデータ件数が多いと、やはり限界がある。
GUI ツールが利用できない環境ならスプールして整えたほうが良いかも。

【補足】
pagesize を 0 にした場合は、タイトルや列名、空白行、
区切り線などが非表示になり、クエリ結果のみ表示される。

関連記事