Empressは、SQLインターフェースのDDL、DMLおよびDCLコマンドを 扱うための1セットのコマンドを提供します。 利用可能な実行インターフェースコマンドの要約を以下に示します。
Table 7-1: 実行インタフェースコマンド
コマンド | 概要 | |
CHANGE WORD | コマンドへの迅速でシンプルな変更を許可します。 | |
DATABASE | 現在のデータベースを表示します。また新しいデータベース名を後ろに指定した 場合、Empressを終了することなく、カレントのデータベースを変更できます。 | |
DO | Empressを終了することなく、オペレーティングシステムと通信し、 エディタなどのシステムユティリティを使用します。 | |
EDIT | コマンドの変更をするための簡単なラインエディタです。 | |
EXIT | Empress SQLセッションを終了します。 | |
HELP | 現在のインターフェースを使用し、利用可能なSQL言語のオンライン参照要約を 提供します。 | |
HOLD | コマンド実行せず、構文エラー、テーブル名/属性名エラーなどチェックし コマンドの構文解析を行います。ヒストリーリストから、前のコマンドを使用して 現行コマンドを作成します。 | |
RECALL | コマンドヒストリーリストを調べて、前出のコマンドを表示します。 | |
RUN | 再度タイプする必要なしに、ヒストリーリストからの前出のコマンドを再実行 します。ファイル名が後続するRUNは、頻繁に用いられているような コマンドを指定したファイルに格納し、コマンドを実行します。 | |
RUN REPORT | リポートスクリプト上で、Emprssリポートライターを起動します。 | |
SET | 変数をセットするのに使用します。特別な変数は、作業環境をカスタマイズします。 | |
SHOW | 変数値を表示します。 | |
STORE | ヒストリーリストのコマンドを、ファイルへ保存します。 | |
UNSET | 変数を削除します。 |
The CHANGE WORDコマンドを使用し、与えられたコマンドの1文字または 文字列を変更します。それは簡単な変更では、ラインエディタの代用として使用すれば 非常に便利な機能です。 このコマンドは、指定コマンドの即時実行または端末上での表示を簡単に行なえます。
Syntax
CHANGE [number] [ALL] word [TO] newword [RUN];
説明
number | RECALL ALLコマンドで表示される、ヒストリーリスト中のコマンド番号。 |
word | コマンド中の単語または句。 |
newword | 新しい単語または句。 |
注意
必要な特権
なし
例
最初に発見された文字列を変更します。
最初にnameフィールドにJonesを条件にし検索し、次にMoscaを条件にして検索 します。
SELECT * FROM loans WHERE name = 'Jones'; CHANGE Jones TO Mosca; SELECT * FROM loans WHERE name = 'Mosca'; RUN;
単一文字列の場合、キーワードでない限り引用符で囲む必要はありません。
発見された全ての文字列を変更します。
現在までの操作において、5番目のコマンドの100を全て200に 変更し、即時に実行します。
CHANGE 5 ALL 100 TO 200 RUN;
DATABASEコマンドは、カレントデータベース名の表示、またはカレント データベースを指定されたデータベースに変更します。
Syntax
|DATABASE |DB |
| [database] [ | |
|INTO| file]; |ONTO| |
注意
必要な特権
なし
例
/usr/joe配下に作成されたデータベースrepairsの場合。
DATABASE;
以下を表示します。
Current Database '/usr/joe/repairs'
同じ位置にaccountsデータベースがある場合に、カレントデータベースを 変更します。
% empsql repairs * DB; Current Database 'repairs' * (execute several commands) * DB "/usr/joe/accounts"; Current Database '/usr/joe/accounts' * (carry on working with the new database)
Empressからオペレーティングシステムへのインタフェースには、DO コマンドとエスケープコマンド(!)の2つがあります。
Syntax
Syntax 1:
DO 'os_command { | |<newline>
|; |
| os_command}'; | |
Syntax 2:
![os_command {; os_command}];
説明
os_command | システムコマンド。 |
注意
UNIX環境でコマンドを指定しない場合は、シェル(変数MSSHELLに設定)の モードへ移動します。
必要な特権
なし
例
1つのオペレーティングシステムコマンド
カレントディレクトリにあるファイルを表示します。
do 'ls';
複数のオペレーティングシステムコマンド
ファイルの表示と日付の表示を行います。
do 'ls date';
オペレーティングシステムのエスケープを使用して、1つのシステムコマンドを実行します。
カレントディレクトリにあるファイルを表示します。
!ls
オペレーティングシステムのエスケープを使用して、複数のシステムコマンドを実行します。
ファイルの表示と日付の表示を行います。
!ls; date
オペレーティングシステムへエスケープしてファイルを編集します。
オペレーティングシステムへエスケープしてファイルを編集します。
* !ed printlist 62 . . . . . w 73 *
EmpressはユーザにEDITコマンドを使用して、ヒストリーリスト からSQLコマンドを編集することを許します。
Syntax
EDIT [number] [run_command];
説明
number | ヒストリーリスト中にある編集するコマンドの番号。 |
run_command | 有効なRUNコマンド。RUNの章で解説されます。 |
注意
Table 7-2: 編集コマンド
コマンド | 説明 |
.^ | 前の行に移動します。 |
.d | 全ての行を表示します。 |
.j | 現在の行と次の行を結合して、1行にします。 |
.u | 全ての変更を取り消して、元の状態から編集を開始します。 |
.x | 現在の行を削除して、次の行を表示する。最終行の場合、前の行を表示する。 |
通常文字は、表示行のその位置にある文字を置き換えます。表示行の末尾以降に 置かれた編集行の文字は表示行に追加されます。
ポジショニング文字(スペース、バックスペース、タブ)は、カーソルを希望の 位置へ移動するのに使用します。タブ文字を入力した後に、バックスペースを押すと タブ文字を入力した位置まで戻ることに注意してください。
特殊文字は以下に示します。
Table 7-3: 編集の指示
指示 | 説明 |
# | その位置にある文字を削除します。 |
% | その位置にある文字をスペースに置き換えます。 |
^ | その位置にある文字の前に文字を挿入します。 |
$ | その位置にある文字から後ろを削除し、$記号の後に入力した文字で 置き換えます。 |
新しい行を挿入したい場合は、バックスラッシュ(\)を編集行で挿入します。 よって以下に示す編集を行なうことにより、1行を2行に分割したり、表示行の真中に 新しい行を挿入できます。
^ \ <Return>
コマンドの全行を編集したら、全行が再表示されます。RUNを入力して コマンドを実行する前に、コマンドをチェックしてください。
SQLインターフェースコマンドの入力時に、非表示文字が入力されると、 キャラクターが不適切である旨のメッセージが表示されます。 対話型インターフェースを使用して、データの挿入または更新を実行している 場合に、これらの文字が入力されると変換エラーが発生し、ラインエディタが起動され ます。
Empressラインエディタは、これらの文字を表示する機能を備えています。 これは、テキスト行での文字位置を示し、削除または変更を実行します。コマンドを 行単位で編集する場合、非表示文字は2回表示されます。 1回目は非表示文字が表示され、2回目はこの文字の変わりにアッドマーク(@)が表示 されます。以下に1回目に表示される、非表示文字を示します。
Table 7-4: 非表示文字
表示文字 | 文字 |
{bs} | <Backspace> |
{esc} | <Escape> |
{^c} | <Ctrl+C> (Cは適当な文字) |
{tab} | <Tab> |
非表示文字は、#記号により削除するか、必要に応じて他の文字に変更できます。
データまたはコマンドにおいてタブは無効とされます。しかしラインエディタ 使用時には{tab}として表示されます。
これらのコマンドを編集しようとした場合、その前のコマンドが編集対象とされ ます。他のコマンド、DO、!、RUN FROMを含めて編集が 可能です。
必要な特権
なし
例
編集例
クエリー言語の構文エラーを修正する、いくつかの例を示します。
SELECT aamount FROM loans; # SELECT amount FROM loans;
SELECT aamount from loans; % SELECT amount FROM loans;
SELECT amount FROM loans; ^name, SELECT name, amount FROM loans;
SELECT name, amount FROM loans WHERE name = 'Mosca'; $ SELECT name, amount FROM loans
SELECT name, amount FROM loans; date SELECT date, amount FROM loans;
SELECT name, aamount FROM loans; #######^ credit_limit SELECT name, credit_limit FROM loans; $personnel; SELECT name, credit_limit FROM personnel; %INTO 'temp'; SELECT name, credit_limit FROM personnel INTO 'temp';
どのような場合でも .uの入力により、全ての変更を取り消して、元の 文字列に戻れます。
SELECT name, credit_limit FROM personnel INTO 'temp'; .u SELECT name, aamount FROM loans;
複数行に渡るコマンドに編集
以下に複数行の編集例を示します。例ではJonesの$100.00を越すローンを表示 します。
* SELECT FROM personnel . WHEERE amount>$100; *** syntax error *** error occurs somewhere in: select from personnel wheere * EDIT; SELECT FROM personnel <Return> WHEERE amount>$100 # <Return> WHERE amount>$100; \ <Return> AND name = Jones <Return> WHERE amount>$100 % <Return> WHERE amount> 100 <Return> AND name = Jones; ^' <Return> AND name = 'Jones; ^' <Return> AND name = 'Jones'; .^ <Return> WHERE amount> 100 .^ <Return> SELECT FROM personnel loans$ <Return> SELECT FROM loans <Return> WHERE amount> 100 <Return> AND name= 'Jones'; <Return> SELECT FROM loans WHERE amount> 100 AND name= 'Jones'; * RUN;
ヒストリーリストのコマンドを編集
ヒストリーリストの6番目のコマンドを、編集後に直ちに実行します。
EDIT 6 RUN;
非表示文字の編集
以下のフィールド名に<Ctrl+A>が入力された場合の編集例を示します。
* SELECT name, amount FROM loans; *** Invalid Character *** error occurs somewhere in: select na SELECT na{^a}me, amount FROM loans; * EDIT; SELECT na@me, amount FROM loans; # <Return> SELECT name, amount FROM loans; <Return> * RUN;
EXITコマンドはEmpress対話型SQLを終了するのに使用します。
Syntax
|EXIT |STOP |
| | |
注意
STOPはEXITと同義語です。Empressは終了されます。
必要な特権
なし
例
対話型SQLを終了します。
EXIT;
または
STOP;
Empressは対話型SQLインタフェースに、オンラインヘルプを提供します。
Syntax
HELP [topic];
説明
topic | 表示したい項目。 |
注意
必要な特権
なし
例
DATABASEに関するヘルプを表示したい場合には、以下のコマンドを 使用します。
HELP DATABASE;
以下の表示を行ないます。
________________________Database________________________ This command prints the name of the current database or changes to a new database. Syntax
|DATABASE |DB |
| [database] [ | |
|INTO| file]; |ONTO| |
The keyword "DATABASE" alone prints the name of the current database. It may be shortened to "DB". Specifying another database name makes DATABASE the current database. The output of a "DATABASE" command may be diverted from the terminal into a new file or appended to an existing file by specifying "INTO" or "ONTO", respectively, and a filename. For further information, enter: HELP display;
HOLDコマンドは、前のコマンドを現行コマンドとして反映させます。この場合 コマンドは実行されません。よってこのコマンドにより、構文エラーやテーブル名、 フィールド名のエラーがないかチェックできます。
Syntax
HOLD | |command |number |
|; | |
説明
command | Empress SQLコマンド。 |
number | ヒストリーリスト中のコマンド番号。 |
注意
コマンド番号はに指定したコマンドが、現行のコマンドになります。 コマンド番号はRECALL ALLコマンドで取得できます。無効なコマンド番号が 指定された場合、以下のメッセージを表示します。
**** User Error **** Invalid Command
必要な特権
なし
例
現行コマンドを作成します。
ヒストリーリストの5番目のコマンドを、現行のコマンドにします。
HOLD 5;
コマンドの構文チェックを行います。
SELECTコマンドの構文チェックを行います。
HOLD SLECT FROM loans;
この場合、SELECTコマンドの最初のEがないので構文エラーと なります。ここでコマンドを編集し訂正できます。
RECALLコマンドは、Empressコマンドヒストリーリストを調べる ために使用します。
Syntax
|RECALL |RC |
| [ | |
|ALL |number |string |
|] [ | | |
|INTO| file]; |ONTO| |
説明
number | ヒストリーリスト中のコマンド番号。 |
string | 引用符で囲まれた文字列。 |
注意
SET MSQLCMDSAVE TO 20;
この値を変更しても、何か新しいコマンドを実行しないとヒストリーリストは変更 されないことに注意してください。
必要な特権
なし
例
MSQLCMDSAVE変数が5に設定されている場合、RECALL ALLを 実行すると以下のような表示が行なわれます。
* RECALL ALL; 8 DISPLAY DB; 9 SELECT * FROM loans; 10 UPDATE loans SET date TO '28 jun 1990' WHERE date = '27 jun 1990'; 11 SELECT * FROM loans WHERE date MATCH "*jun*"; 12 !date
ここでいくつかのRECALLコマンドを実行します。
* RECALL; !date * RC 9; SELECT * FROM loans; * RC -2; UPDATE loans SET date to '28 jun 1990' WHERE date = '27 jun 1990'; * RC 'loans'; 9 SELECT * FROM loans; 10 UPDATE loans SET date TO '28 jun 1990' WHERE date = '27 jun 1990'; 11 SELECT * FROM loans WHERE date MATCH "*jun*";
RUNコマンドはEmpressヒストリーリスト中のコマンドまたは、 オペレーティングシステムファイル中のコマンドを実行します。
Syntax
Syntax 1:
|RUN |START |
| [number] [ | |
|INTO| file] [ |ONTO| |
|SET parameter {, parameter} |(parameter {, parameter}) |
|]; | |
Sytax 2:
|RUN |START |
| [FROM] file [ | |
|INTO| file] [ |ONTO| |
|SET parameter {, parameter} |(parameter {, parameter}) |
|]; | |
説明
number | ヒストリーリスト中のコマンド番号。 |
file | ファイル名。 |
parameter | Empress数値変数への値。 |
注意
必要な特権
なし
例
ヒストリーリストからコマンドを実行します。
ヒストリーリストの9番を実行します。
RUN 9;
前のコマンドを再実行します。
SELECTコマンドを実行した場合。
SELECT number FROM loans WHERE name = 'Jones';
コマンドを即座に再実行する場合には、以下のコマンドを実行します。
RUN;
編集後のコマンドを実行します。
RUNコマンドは、編集されたコマンドも実行できます。
* SELCT amount FROM loans WHERE name = 'Peterson'; *** syntax error *** error occurs somewhere in: selct * EDIT; SELCT amount FROM loans WHERE name = 'Peterson'; ^e SELECT amount FROM loans WHERE name = 'Peterson'; * RUN; amount $50.00
ファイル中のコマンドを実行します。
以下の2つのコマンドを収録した、showlistというファイルを作成します。
SELECT date, amount FROM loans WHERE name = 'Peterson'; SELECT SUM (amount) FROM loans WHERE name = 'Peterson';
コマンドを実行します。
* RUN FROM showlist; date amount June 6, 1983 $50.00 SUM (amount) 50.00 * INSERT INTO loans (name, date, amount) VALUES ('Peterson', '19 Aug 1990', '45'); Number of Records Entered = 1 * RUN FROM 'showlist'; date amount June 6, 1990 $50.00 August 19, 1990 $45.00 SUM (amount) 95.00 *
パラメータ付きで、ファイルからコマンドを実行します。
パラメータを設定し、RUNコマンドで実行させるファイルseeloansに、 以下のようなコマンドを記述します。
SELECT FROM loans WHERE name = '$1' AND amount > '$2'; SELECT SUM (amount) FROM loans WHERE name = '$1';
コマンドを実行します。
RUN FROM seeloans SET Jones, 200;
ファイル中の$1、$2がパラメータにより置き換えられ、 以下のような実行結果を表示します。
name date amount Jones August 12, 1990 $300.00 SUM (amount) 358.95
RUN REPORTコマンドは、レポートスクリプトにより。 Empress Report Writerを実行します。 a report script.
Syntax
[ | |RUN |START |
|] REPORT [FROM] script [[ON] data_file] [ | |
|INTO| file] |ONTO| |
[ | |SET parameter {, parameter}
|(parameter {, parameter}) |
|]; | |
説明
script | Empress Report Writerスクリプト。 |
data_file | REPORT DUMPフォーマットでのデータファイル。 |
file | ファイル名。 |
parameter | Empress数値変数への値。 |
注意
必要な特権
なし。
SETコマンドは、Empress変数を設定します。
Syntax
SET | | | | | | | |
FROM file
value {, value} |
|; | | | | | |
UNSET variable;
説明
variable | Empress変数。 |
value | 1から99の数値。 |
注意
必要な特権
なし
例
ファイルからEmpress変数を設定します。
以下の記述があるmsvarsファイルがあります。
MSQLCMDSAVE=20 MSQLSELCOLSEP="|" l=loans p=personnel
以下のコマンドを実行した場合。
SET FROM msvars;
結果として変数MSQLCMDSAVEに20、変数MSQLSELCOLSEP に|、変数lにloans、変数pに personnelが設定されます。
英数字変数の設定
この例は、pと呼ばれる変数をセットし、次にコマンドの中でその値を 使用します。
SET p TO personnel; SELECT FROM $p;
以下の結果を表示します。
number name phone credit_limit 10 Kilroy 426-9681 $500.00 5 Mosca 426-9681 $750.00 17 Wladislaw 811-5110 $10.00 3 Jones 667-2951 $500.00 8 Peterson 978-6060 $250.00 4 Scarlatti 961-7363 $100.00 9 Jordan 964-3335 $250.00
変数に頻繁に用いられているコマンドをセットします。
頻繁に用いられているコマンドも、変数にセットされる場合があります。 例えば、getloans変数にSELECT FROM loans;をセットする場合。
SET getloans TO "SELECT * FROM loans;";
SELECT * FROM loans;のまわりの引用符に注意してください。コマンド中 にスペースが存在するので必要となります。以下のコマンドを実行すると、
$getloans
SELECT * FROM loans;と同一の処理結果が表示されます。
数値変数の設定
コマンド
SET personnel;
は、$1にpersonnelを設定します。
SET personnel; SET loans;
この場合には、最初に$1にpersonnelを設定し、 次に$1にloansを再設定します。
同様に
SET loans, personnel; SET Jones;
これは、$1にloansを設定し、$2に personnelを設定します。次に$1をJonesに再設定し、 $2を解放します。
数値変数は英数値変数と同様に、通常のクエリーで使用することができますが、 数値変数の場合は、通常RUNコマンドと併用します。設定されている 数値変数はRUNコマンドの入力時にその設定は解放されますので、変数 をRUNコマンドで使用したい場合には、RUNコマンド上で明示的に 再設定する必要があります。
2つのコマンド、
SET personnel; SELECT * FROM $1;
は、以下の1つのコマンドと同一です。
SELECT * FROM personnel;
また、別のSET valueコマンドを入力しないか、RUNコマンド を入力しない限り、$1はpersonnelの値を引き継ぎます。
数値変数を有効に使用するには、コマンドファイルを利用した場合の処理を行なう 場合です。以下のコマンドが記述されたファイルをjnsloansとした場合、
SELECT * FROM loans WHERE name = 'Jones' AND amount > 200;
Jonesの未返済のローン残高を参照したい場合には、次のコマンドを指定します。
RUN FROM 'jnsloans';
この方法は簡単で役立ちますが、反面制限が発生します。6人分の参照を行なう場合 には、ファイルを6つ用意する必要があります。
さらに、以下のコマンドが記述されたhndloansというファイルについて 考察してみてください。
SELECT * FROM loans WHERE name = '$1' AND amount RANGE $2 TO $3;
この記述中の$1,$2,$3はパラメータです。パラメータ を使用するコマンドファイルには、必ずわたす必要があります。
RUN FROM 'fndloans' SET Jones, 200, 5000;
これで$1はJonesに、$2は200、$3 が5000に置き換えられてコマンドが実行されます。
Kilroyの小額のローンを参照するには、次のコマンドを使用します。
RUN FROM "fndloans" SET Kilroy, 0, 200;
このようにコマンドファイルに数値変数を使用した場合、詳細に記述したコマンド よりも適用範囲が広がります。
SHOWコマンドは、設定されている変数の値を表示します。
Syntax
SHOW variable {, variable};
説明
variable | Empress変数。 |
注意
このコマンドは、任意のEmpressシステム変数、およびSET コマンドを使用して設定した任意の変数を表示します。変数が設定されていない場合 には、何も表示されません。
必要な特権
なし
例
SHOWコマンドの実行例
SHOW MSQLPROMPT1, MSQLPROMPT2;
以下の表示を行います。
MSQLPROMPT1=* MSQLPROMPT2=.
ヒストリーリスト内にある、Empressコマンドは、STOREコマンド によりシステムファイルへ保存できます。
Syntax
STORE [number] [ | |INTO|] file; |ONTO| |
説明
number | ヒストリーリスト中のコマンド番号。 |
注意
例
ヒストリーリストに、以下のコマンドが保存されている場合。
* RECALL ALL; 8 DISPLAY DB; 9 SELECT * FROM loans; 10 UPDATE loans SET date TO '28 jun 1990' WHERE date = '27 jun 1990'; 11 SELECT * FROM loans WHERE date MATCH "*jun*"; 12 !date
以下のコマンドは、ヒストリーリスト内のSELECT * FROM loans;コマンド をloans_fileファイルに保存します。
STORE 9 INTO loans_file;