たとえば、さまざまな列を表示するための長いステートメントを実行するときの問題の1つ
select g.guestid, g.forename, g.surname, b.bookingid,
b.arrivedate, b.departdate, br.floorno, br.roomno from...
linuxターミナルでの列のサイズ設定が問題のようです。たとえば、Forename VarChar(80)列は、上記のステートメントを実行するときに画面の幅の大部分を占め、それを削減する1つの方法は次のとおりです。
SET COLUMN FORENAME FORMAT A10
例えば。ただし、多くの列はこれを繰り返し実行する必要があり、これは非常に長いものです。つまり.
SET COLUMN FORENAME FORMAT A10
SET COLUMN SURNAME FORMAT A10
等々...
すべてがうまく収まるように、テキストの幅に応じて列の幅を調整すると言う方法はありますか?そして、これは好きではありません。
FUNCTIONSを使用しないソリューションをお勧めします。
いいえ、SQL * Plusの列幅をテキスト幅に「自動調整」する簡単な方法はありません。
ただし、スクリプトを使用すると、作業が楽になります。
まず、タイピングを減らします。 SET COLUMN FORENAME FORMAT A10
を実行せず、代わりに@c forename 10
のようなことを実行してください。
17:33:31 SYSTEM@dwal> cl col
columns cleared
17:33:33 SYSTEM@dwal> select * from dual;
D
-
X
Elapsed: 00:00:00.01
17:33:37 SYSTEM@dwal> @c dummy 10
17:33:43 SYSTEM@dwal> select * from dual;
DUMMY
----------
X
Elapsed: 00:00:00.01
17:33:45 SYSTEM@dwal> get s:\c.sql
1* col &1. for a&2.
17:33:50 SYSTEM@dwal>
または、次のように幅の広い列をすばやく非表示にします。
17:48:44 SYSTEM@dwal> select owner, table_name from all_tables where rownum = 1;
OWNER TABLE_NAME
------------------------------ ------------------------------
SYS CON$
Elapsed: 00:00:00.24
17:48:49 SYSTEM@dwal> @np owner
17:48:53 SYSTEM@dwal> select owner, table_name from all_tables where rownum = 1;
TABLE_NAME
------------------------------
CON$
Elapsed: 00:00:00.26
17:48:56 SYSTEM@dwal> get s:\np
1 col &1 noprint
2* @undef
これらは、私が日常的に使用している多くのスクリプトのうちの2つにすぎません。このアプローチは、それに慣れて効果的にするために、カスタマイズに時間と個人的な注意を払う必要がありますが、押すキーの量を劇的に減らします。
次に、glogin.sqlがあります。どこかに接続するたびに実行されるスクリプトです。行を折り返す「長い」列のリストを知っていると思います。
そこにそれらをリストするだけで、
SET COLUMN FORENAME FORMAT A10
SET COLUMN SURNAME FORMAT A10
列パラメーターは、(再)接続するたびに設定されます。
他のユーザーがすでに述べたように、sqlplusの簡単な解決策はありません。 glogin.sql
またはlogin.sql
ファイルを使用すると役立つ場合があります(@RenéNyffeneggerが提供した これらのファイルに関する記事 )。これらのファイルに列定義を入れることができます。常に同じクエリをクエリする場合、または列の名前に一貫性がある場合は、これが役立つ場合があります。
または、呼び出し元のスクリプトに列ステートメントを配置します
@scriptname.sql
列形式を使用する場合。スクリプトを SQLPATH
variable の一部であるディレクトリに配置して、任意のディレクトリから呼び出すことができるようにします。
または、別のツールを使用します。あるユーザーはすでに SQLcl を指しています。
Tom Kyteは、結果セットを垂直方向に表示する print_tableprocedure を作成しました。
例えば:
SQL> exec print_table('select g.guestid, g.forename, ... from ...')
GUESTID : 210
FORENAME : DINGLE
...
etc...
....
-----------------
PL/SQL procedure successfully completed.
この手順は、結果セットが小さく、理想的には10行以下の場合に特に便利です。