Interactive SQL で複数の結果セットを返す設定の方法

本書では、GUI モードと 非 GUI (コンソール) モードの両方で Interactive SQL ( dbisql.exe) が複数の結果セットを返すように設定する方法を説明します。また、C バージョンの Interactive SQL ( dbisqlc.exe) についても、GUI モードとスクリプト・モードでの実行時に複数の結果セットを返す使用方法を説明します。

以下では、Interactive SQL を操作する際の各オプションを示した例も使用します。本書は SQL Anywhere Studio 9.0.2 を使って確認されていますが、内容はどのバージョンの SQL Anywhere 9 にも適用されます。

nteractive SQL のオプション設定

Interactive SQL のメニューで、[ツール] – [オプション] – [結果] を選択します。

デフォルトでは、[複数の結果セットを表示] がオフで、[C コンソール・モード] は [最後] の結果セットを返すように設定されています。

Interactive SQL の GUI を使用して複数の結果セットを表示するには、[複数の結果セットを表示] を選択します。このオプションを恒常的な設定にする場合は、[設定] をクリックします。

Interactive SQL をコンソール・モード (コマンド・プロンプト) で使用して複数の結果セットを返すには、[設定] をクリックして [複数の結果セットを表示] を恒常的な設定にする必要があります。このオプションは Interactive SQL の設定ファイルに保存されるため、コンソールでは複数の結果セットを返すように設定するオプションはありません。

[オプション] ダイアログでは、コンソール・モードで結果セットを返す方法を設定することができます。オプションは [最後]、[なし]、[すべて] の 3 つです。コンソール・モードでも、.SQL スクリプトを使用してデータベースに対して SQL 文を実行するときにISQL_PRINT_RESULT_SET オプションを使用すれば、このオプションを設定できます。

[コンソール・モード] を [すべて] に設定すると、Interactive SQL の実行時にクエリの結果がすべてコンソールに返されます。これが適用されるのは、[複数の結果セットを表示] を選択している場合だけです。

GUI を使用する Interactive SQL の例

SQL Anywhere 9 に付属しているデモ・データベース asademo.db を使用して、Interactive SQL でデータベースを起動し、それに接続します。

次の SQL を実行します。

CREATE PROCEDURE ListPeople( )
RESULT ( lname CHAR(36), fname CHAR(36) )
BEGIN
SELECT emp_lname, emp_fname
FROM employee;
SELECT lname, fname
FROM customer;
SELECT last_name, first_name
FROM contact;
END

CALL ListPeople ( );

各結果セットのタブに、3 つの結果セットが返されます。

コンソールを使用する Interactive SQL の例

Interactive SQL の GUI を使用してコンソール・モードを設定した後、コンソールを使って複数の結果セットを返すには、次のコマンド・プロンプトを実行します。

C:> dbisql -c “uid=dba;pwd=sql;eng=asademo” CALL ListPeople ( );
出力:
実行時間 :0.1 秒
lname fname
———————
Whitney Fran
Cobb Matthew

(最初の 75 ロー)

lname fname
———————-
Devlin Michaels
Reiser Beth

(最初の 126 ロー)
lname fname
——————
Hildebrand Jane
Simmon Larry

Masalsky Kurt
Collins MaryBet
(最初の 60 ロー)

.SQL スクリプト・ファイルを使用してデータベースに対して SQL 文を実行するときは、ISQL_PRINT_RESULT_SET オプションを設定しないかぎり、複数の結果セットの動作はデフォルトになります。

.SQL スクリプト・ファイルを使用してデータベースに対して SQL 文を実行するとき、Interactive SQL のデフォルト動作で返されるのは最初の結果セットだけで、後続の結果セットはコンソールに返されません。

script.SQL の内容:
CALL ListPeople ( );

コマンド・プロンプトで次のように実行します。

C:> dbisql -c “uid=dba;pwd=sql;eng=asademo” READ script.SQL;
出力:
実行時間 :0.1 秒
lname fname
———————
Whitney Fran
Cobb Matthew

Nielsen Robert
Ahmed Alex
(最初の 75 ロー)

.SQL ファイルを使用して結果セットをすべて返すには、script.SQL ファイルの内容を変更して、ISQL_PRINT_RESULT_SET オプションを次のように設定します。

SET OPTION ISQL_PRINT_RESULT_SET = ‘ALL’;
CALL ListPeople ( );

コマンド・プロンプトで次のように実行します。

C:> dbisql -c “uid=dba;pwd=sql;eng=asademo” READ script.SQL;
出力:
lname fname
———————
Whitney Fran
Cobb Matthew


(最初の 75 ロー)
lname fname
———————-
Devlin Michaels
Reiser Beth

(最初の 126 ロー)
lname fname
——————
Hildebrand Jane
Simmon Larry

(最初の 60 ロー)
実行時間 :0.16 秒

.SQL ファイルを使用して最後の結果セットをすべて返すには、script.SQL ファイルの内容を変更して、ISQL_PRINT_RESULT_SET オプションを次のように変更します。

SET OPTION ISQL_PRINT_RESULT_SET = ‘LAST’;
CALL ListPeople ( );

コマンド・プロンプトで次のように実行します。

C:> dbisql -c “uid=dba;pwd=sql;eng=asademo” READ script.SQL;
出力:
last_name first_name
———————
Hildebrand Jane
Simmon Larry

Masalsky Kurt
Collins MaryBeth
(最初の 60 ロー)

GUI を使用する Interactive SQL C バージョン (dbisqlc.exe) の例

SQL Anywhere 9 に付属しているデモ・データベース asademo を使用して、Interactive SQL C バージョンでデータベースを起動し、それに接続します。
次のように実行します。

CALL ListPeople ( );

最初の結果セットは、ただちに [データ] ウィンドウに返されます。[統計情報] ウィンドウには、プロシージャがまだ実行中であり、続行するときは RESUME 文を使用するようにという指示が表示されます。

2 番目の結果セットを表示するには、[コマンド] ウィンドウに [RESUME] と入力して [実行] を押します。2 番目の結果セットが表示されたら、もう一度 [RESUME] を実行すれば 3 番目の結果セットが返されます。最後の [RESUME] でクエリの実行が完了します。

コンソールを使用する Interactive SQL C バージョン (dbisqlc.exe) の例

Interactive SQL C バージョンでは、Interactive SQL の場合と同じようにコンソールに結果セットが返されることはありません。InteractiveSQL C バージョンを使用する場合、結果セットはファイルに出力する必要があります。

CALL ListPeople ( ) を実行するには、script.SQL を次のように設定します。

CALL ListPeople ();
output to ‘c:\resultset1.txt';
RESUME;
output to ‘c:\resultset2.txt';
RESUME;
output to ‘c:\resultset2.txt';

コマンド・プロンプトで次のように実行します。

C:> dbisqlc -c “uid=dba;pwd=sql;eng=asademo” READ script.SQL;

Interactive SQL C バージョンの実行と終了に合わせて点滅があります。アプリケーションの開閉を防ぐには、コマンド・ラインに -q スイッチを追加します。

Interactive SQL C バージョンの実行が完了すると、結果セットを含む 3 つのテキスト・ファイルが生成されます。