クエリ結果が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 にした場合は、タイトルや列名、空白行、
区切り線などが非表示になり、クエリ結果のみ表示される。