sql92 は、SQL92ステートメントを実行するための、コマンドライン型ツールである。
Command 構文
sql92 <options> [<filename>]
<filename>が指定されたら、sql92は、その名前のファイルにストアされたSQK92ステートメントを読みこみ実行する。入力ファイル名が省略されている場合には、標準入力からSQL92ステートメントを読みこみ実行する。出力はすべて、標準出力に対して行われる。
オプション:
-s |
|
サイレント(Silent)。コマンド実行時に、標準出力に書き出さない。デフォルトでは、入力ソースがターミナル・デバイスでない場合、ステートメントは実行時に書き出される。 |
-v |
|
出力有り(Verbose)。実行時にステートメントを逐次標準出力に書き出す。 |
-i |
|
無視(Ignore)。通常、sql92は、エラーが起こると、処理から強制的に抜け出す。このigonoreオプションを指定しておけば、そのような場合でも、sql92 は処理を続行する。 |
-e |
|
エラーのときは、強制的に処理を終える(Exit)。 |
-p |
|
プロンプト(Prompt)。デフォルトでは、sql92は、入力ソースがターミナル・デバイスの場合だけ、ステートメントに対しプロンプトを返す。しかし、このpromptオプションを指定しておくと、sql92 は常にプロンプトを出す。 |
-c |
|
比較(Compare)。テストを実施し、入力と出力を比較して、それらが等しければ、.合格のコメントを書き出し、そうでなければ書き出さない。 |
-u |
|
入力エンコード。引数で、入力ファイルのエンコードを指定する。デフォルトは、UTF8で、US-ASCIIとして扱われるものである。 |
一般的事項
sqk92のコマンドは、常に“;”というキャラクタで終わる。sql92に対し、タイプする場合は、“;”が来るまで、ステートメントを中断してはならない。もしそうすると、SQL92ステートメントに変換したとき、複数行に分かれてしまう。SQL92ステートメントのほとんどは、FrontBaseSQLサーバによって解釈されるわけだが、コマンドの中には、sql92側で解釈されるものもある。こういったコマンドには、サーバへの接続処理を行うものや、入力ファイルの管理を行うものが多い。
コメントは“#”というキャラクタではじめるか、“--”というストリングを使う。これで、該当行末までがコメントとして扱われる。“#”は、コメント区切り文字で、インタープリタ(interpreter)に対する書き込みを許す。コメントは、入力の一部として考えられるため、出力に書き出される。キャラクタ“>”で始まる行もまた、コメントとして無視される。しかし、この場合は出力に書き出されない。SQL92ステートメントによる実行結果は、“>”で始まる行によって書き出される。これにより、テストスクリプトを書いて、スクリプトの出力が入力と同じであるかをチェックし、元に戻ってプログラムの穴を簡単にチェックすることができる。
ファイル初期化を実行しようとすると、.sql92rc.sqlという名前のsql92コマンドが呼び出される。sql92は、まずカレント・ワーキング・ディレクトリをサーチし、次にユーザのホーム・ディレクトリをサーチする。
以下に、sql92で解釈されるコマンドを示す:
Connect
構文:
CONNECT TO <database-name>
[DATABASE_PASSWORD <database-password>]
[ON <host-name>]
[AS <connection-name>]
[USER <user-name>]
[PASSWORD <password>];
CONNECT TO DEFAULT;
最初の構文例は、<database-name>という名前のデータベースに、<host-name>というホスト上の<database-password>というデータベース・パスワードを使って、接続する命令である。<host-name>が特に指定されていなければ、ローカルホストが接続先とされる。各接続は、接続名をもって識別され、接続名はプロンプト値としても用いられる。接続名は、データベース名と、ホスト名から構成される。<user-name>は、SQL92セッションに対して使われる識別子でもある。<user-name>が特に指定されていなければ、ホストのOSに対するログイン名が<user-name>として使われる。<password>は、ユーザ・パスワードを指定するものである。接続コマンドは、SQL92のコマンドでも、実際にはsql92で解釈されている。
2番目の構文例は、デフォルトの接続を確保する場合である。
Create Database
構文:
CREATE DATABASE <database-name> [ON <host-name>];
<host-name>という名前のホストに、<database-name>という名前の新しいデータベースを作成する。ホスト名が指定されない場合、ローカルホストの名前がホスト名となる。
Define Blob
構文:
DEFINE BLOB <blob-name> LENGTH <length> VALUE {<hex-bytes>};
<blob-name>という名前の、<length>バイト長のblobオブジェクトを定義し、その値を、<hex-bytes>リストに基づいて決定する。<hex-bytes>は、16進数数字で二桁とする。<hex-bytes>リストは、新しい行と空白からなる。blobオブジェクトは、定義されると、それ以降のSQLステートメントから参照可能である。参照形式は、@'<blob-name>'というフォームで、特定の列に、blobオブジェクトを新たに作成する。blobオブジェクトは、いちいち手でつくられるべきものではなく、通常は、EOFアダプタや、その他のツールによるデバッグ出力結果として生じるものである。blobオブジェクトは、次のcommitあるいはrollbackが実行されると、消去される。
Define Clob
構文:
DEFINE CLOB <clob-name> LENGTH <length> VALUE {<hex-bytes>};
オブジェクト抜きのblobを、キャラクタ・ストリングとして定義する。
Delete Database
構文:
DELETE DATABASE <database-name> [ON <host-name>];
<host-name>という名前のホストに、<database-name>という名前のデータベースを削除する。ホスト名が指定されない場合、ローカルホストの名前がホスト名となる。
Disconnect
構文:
DISCONNECT <connection-name>
DISCONNECT CURRENT;
DISCONNECT ALL;
最初の構文では、<connection-name>という名前の接続を切断する。2番目の構文では、カレントの接続を切断し、3番目の構文では、すべての接続を切断する。
Execute
構文:
EXECUTE <file-name>;
<file-name>という名前のファイルから、sql92コマンドを読み取り実行する。
Exit
構文:
EXIT
sql92の処理を終了する。EXITは、QUITと共に、“;”で終了する必要がないコマンドである。
Quit
構文:
QUIT
sql92の処理を終了する。QUITは、EXITと共に、“;”で終了する必要がないコマンドである。
Set Connection
構文:
SET CONNECTION <connection-name>;
SET CONNECTION DEFAULT;
最初の構文では、<connection-name>という名前の接続を、カレントの接続に設定する。2番目の構文では、デフォルトの接続を、カレントの接続に設定する。
Set Database Password
構文:
SET DATABASE_PASSWORD [<password>];
データベース・パスワードを設定する。<password>が省略されている場合は、以降の接続において、パスワードは不要となる。
Set Default
構文:
SET DEFAULT LOCKING [OPTIMISTIC | PESSIMISTIC];
新しいセッションが作成された場合の、デフォルトのロック基準を設定する。
Set Password
構文:
SET PASSWORD [USER <user-name>]
[OLD <old-password>]
[NEW <new-password>];
<user-name>という名前のユーザに対し、パスワードを設定する。該当ユーザが、すでにパスワードを持っている場合は、その古いパスワードを特定し、その上で<new-password>で指定した新しいパスワードを設定する。<new-password>が省略された場合は、そのユーザはパスワードなしでログインできる。
Show Connections
構文:
SHOW CONNECTIONS;
過去、確保された全接続を示す。
Start Database
構文:
START DATABASE <database-name> [ON <host-name>];
<host-name>という名前のホストに、<database-name>という名前のデータベースを運用開始する。ホスト名が指定されない場合、ローカルホストの名前がホスト名となる。
Stop
構文:
STOP;
カレントの接続により接続されたデータベースの運用を停止する。
Stop Database
構文:
STOP DATABASE <database-name> [ON <host-name>];
<host-name>という名前のホストに、<database-name>という名前のデータベースを運用停止する。ホスト名が指定されない場合、ローカルホストの名前がホスト名となる。
Example
ql075.sqlというファイルがExampleと呼ばれるデータベースを作成する。このデータベース中のテーブルは、EOF Movie例で使われるデータを納めるために使われている。
|