SQL シェルの構成パラメータは、現在のターミナル・プロセスにおける現在の SQL シェルの呼び出しに固有です。設定は複数のネームスペースにわたって適用されます。ただし、SQL シェルを終了すると、SQL シェルのパラメータはすべてシステム全体の既定値にリセットされます。InterSystems IRIS ではシステム既定値が用意されていますが、以下で説明するように、SET SAVE を使用して、現在のプロセスに別の既定値を設定できます。
SET param value SET param = value
param と value のどちらも、大文字と小文字が区別されません。スペースは許可されていますが、等号の前後には不要です。
SQL シェルの SET SAVE コマンドでは、現在のシェル構成パラメータの設定がユーザの既定値として保存されます。これらの既定値は、現在のプロセスから後続の SQL シェルのすべての呼び出しに適用されます。また、これらは SQL シェルの既定値として、ユーザが起動するターミナル・プロセスで今後呼び出されるすべての SQL シェルにも適用されます。これは明確にリセットされるまで保持されます。SET SAVE を使用しても、現在実行中の SQL シェルの呼び出しには影響しません。
SQL シェルの SET CLEAR コマンドでは、現在のプロセスに対するシェル構成パラメータの現在の設定がクリアされます (システムの既定値にリセットされます)。InterSystems IRIS では、現在のプロセス、または現在のユーザによって呼び出されるすべての新しいターミナル・プロセスによる後続の SQL シェルの呼び出しに、この既定値へのリセットが適用されます。SET CLEAR は、現在実行中の SQL シェルの呼び出しには影響しません。
SET SAVE も SET CLEAR も、管理ポータルを使用して構成および表示されるシステム全体の SQL シェルの既定設定を変更することはありません。
COLALIGN の設定
SET COLALIGN を使用して、クエリ結果セット・データと列ヘッダの表示に使用する空白形式を指定できます。使用可能なオプションは以下のとおりです。
-
区切り文字 : 結果セット・ヘッダ/データ列は、標準の区切り文字 (タブ) に基づいて配置されます。これが既定値です。
-
ヘッダ : 結果セット・ヘッダ/データ列は、列ヘッダの長さと標準の区切り文字 (タブ) に基づいて配置されます。
-
データ : 結果セット・ヘッダ/データ列は、列データ・プロパティの精度/長さと標準の区切り文字 (タブ) に基づいて配置されます。
詳細は、“ダイナミック SQL の使用法” の章の "%Display() メソッド" を参照してください。
DISPLAYMODE および DISPLAYTRANSLATETABLE の設定
以下の例に示すように、SET DISPLAYMODE を使用して、クエリ・データの表示に使用する形式を指定できます。
USER>DO $SYSTEM.SQL.Shell()
SQL Command Line Shell
----------------------------------------------
The command prefix is currently set to: <<nothing>>.
Enter q to quit, ? for help.
[SQL]USER>>SET DISPLAYMODE XML
displaymode = xml
[SQL]USER>>
DISPLAYMODE の既定値は CURRENTDEVICE です。この既定値では、クエリ・データが TXT 形式でターミナルに表示されます。SET DISPLAYMODE = CUR を指定して、CURRENTDEVICE の既定値をリストアすることができます。
その他の使用可能なオプションは、TXT、HTML、PDF、XML、および CSV です。形式の選択によってファイル・タイプが決まります。InterSystems IRIS は、そのタイプのファイルを作成し、ファイルにクエリ・データを書き込み、可能であれば、そのクエリ・データ・ファイルを表示するための適切なプログラムを起動します。TXT 以外のすべてのオプションで、結果セットのメッセージを記録するために、2 つ目のファイルが作成されます。既定では、SQL シェルにより、それらのファイルが InterSystems IRIS の mgr\Temp\ ディレクトリに作成され、ランダムに生成されたファイル名が適切なファイル・タイプの接尾語を伴って割り当てられます。生成されたメッセージ・ファイル名は、追加された文字列 “Messages” を除いて、データ・ファイルと同じ名前になります。HTML、PDF、および XML オプションの場合、Messages ファイルには、クエリ・データ・ファイルと同じファイル・タイプ接尾語が付きます。CSV オプションの場合は、Messages ファイルには TXT ファイル・タイプ接尾語が付きます。
以下は DISPLAYMODE = TXT の場合に生成されたファイルの例です。
C:\InterSystems\IRIS\mgr\Temp\sGm7qLdVZn5VbA.txt
C:\InterSystems\IRIS\mgr\Temp\sGm7qLdVZn5VbAMessages.txt
クエリを実行するたびに、SQL シェルではランダムに生成されたファイル名を持つファイルの新規ペアが作成されます。
DISPLAYMODE が TXT または CSV の場合は、形式変換の実行時に、適用する変換テーブルの名前を指定することもできます。SET DISPLAYTRANSLATE または SET DISPLAYTRANSLATETABLE のいずれかを指定できます。変換テーブル名の値では、大文字と小文字が区別されます。
DISPLAYMODE が CURRENTDEVICE 以外の値に設定された場合、制御文字を含むクエリ結果セットのデータがあると、警告メッセージが生成されます。一般的に、クエリ結果セットのデータに制御文字が出現するのは、論理モードの場合のみです。例えば、論理モードで表示された場合には、リスト構造のデータに制御文字が含まれます。このため、DISPLAYMODE を CURRENTDEVICE 以外の値に設定する場合は、SELECTMODE も DISPLAY または ODBC に設定することをお勧めします。
DISPLAYFILE および DISPLAYPATH の設定
DISPLAYMODE の値が CURRENTDEVICE 以外に設定されていると、DISPLAYFILE および DISPLAYPATH パラメータを使用してターゲット・ファイルの場所を指定することができます。
-
DISPLAYFILE の場合、このパラメータを接尾語なしの簡単なファイル名に設定します。例えば、SET DISPLAYFILE = myfile のようになります。また、このパラメータを部分修飾されたパスに設定することもできます。InterSystems IRIS は、これを DISPLAYPATH の値または既定のディレクトリに追加します (必要に応じてサブディレクトリを作成します)。例えば、SET DISPLAYFILE = mydir\myfile のようになります。DISPLAYPATH が設定されている場合、指定されたディレクトリにこのファイル名でファイルが作成されます。DISPLAYPATH が設定されていない場合、InterSystems IRIS の mgr\Temp\ ディレクトリにこのファイル名でファイルが作成されます。
-
DISPLAYPATH の場合、このパラメータを既存の完全修飾されたディレクトリ・パス構造に設定します。このディレクトリ・パス構造の末尾には、お使いのオペレーティング システム・プラットフォームに応じてスラッシュ (“/”) または円記号 (“\”) を付加する必要があります。DISPLAYFILE が設定されている場合、このディレクトリに DISPLAYFILE 名でファイルが作成されます。DISPLAYFILE が設定されていない場合、このディレクトリにランダムに生成された名前でファイルが作成されます。DISPLAYPATH ディレクトリが存在しない場合、InterSystems IRIS は DISPLAYPATH および DISPLAYFILE 設定を無視し、代わりに、既定のディレクトリと既定のランダム生成ファイル名を使用します。
必要に応じて、DISPLAYPATH 値の末尾にスラッシュ (または円記号) を自動的に付加したり、DISPLAYFILE 値の先頭からスラッシュ (または円記号) を自動的に削除して、有効な完全修飾のディレクトリ・パスが作成されます。
以下の例では、DISPLAYMODE、DISPLAYFILE、および DISPLAYPATH を設定します。
[SQL]USER>>SET DISPLAYMODE XML
displaymode = xml
[SQL]USER>>SET DISPLAYFILE = myfile
displayfile = myfile
[SQL]USER>>SET DISPLAYPATH = C:\temp\mydir\
displaypath = C:\temp\mydir\
[SQL]USER>>
クエリを実行すると、SQL シェルにより以下のファイルが生成されます。最初のファイルにはクエリ・データが含まれます。2 番目のファイルにはクエリの実行により生じたあらゆるメッセージが含まれます。
C:\temp\mydir\myfile.xml
C:\temp\mydir\myfileMessages.xml
DISPLAYFILE も DISPLAYPATH も指定しない場合、InterSystems IRIS インストール先の Mgr\Temp\ ディレクトリ (C:\InterSystems\IRIS\Mgr\Temp\ など) にランダム生成ファイル名でファイルが作成されます。
DISPLAYMODE が CURRENTDEVICE に設定されていない場合、DISPLAYFILE を設定してクエリを実行するたびに、命名されたファイルおよび関連メッセージ・ファイルのあらゆる既存データが新規のクエリ・データにより置換されます。DISPLAYFILE 未設定でクエリを実行するたびに、SQL シェルではランダムに生成されたファイル名で新規ファイルが作成され、かつ新規の関連メッセージ・ファイルも作成されます。
DISPLAYMODE が CURRENTDEVICE に設定される場合、DISPLAYFILE および DISPLAYPATH パラメータは影響を受けません。
EXECUTEMODE の設定
SQL シェルでは、SQL 文の即時実行と遅延実行がサポートされます。即時実行では、Enter キーを押すと、指定された SQL 文の作成と実行が行われます。遅延実行では、Enter キーを押したときに文の作成は行われますが、SQL プロンプトで GO を指定するまで実行されません。
使用可能なオプションは、SET EXECUTEMODE IMMEDIATE (既定)、SET EXECUTEMODE DEFERRED、および現在のモード設定を表示する SET EXECUTEMODE です。以下の例は、実行モードを設定します。
USER>DO $SYSTEM.SQL.Shell()
SQL Command Line Shell
----------------------------------------------
The command prefix is currently set to: <<nothing>>.
Enter q to quit, ? for help.
[SQL]USER>>SET EXECUTEMODE DEFERRED
Executemode = deferred
[SQL]USER>>
遅延実行を使用すると、複数の SQL クエリを作成し、名前または番号で呼び出して実行できます。作成済みの SQL 文を実行するには、必要な文を (適切なネームスペースから) 呼び出して、GO を指定します。
以下の例は、遅延モードでの 3 つのクエリの作成を示しています。最初の 2 つは保存され、呼び出し名が割り当てられます。3 つ目には名前は割り当てられませんが、番号で呼び出すことができます。
[SQL]USER>>SELECT TOP 5 Name,Home_State FROM Sample.Person
1. SELECT TOP 5 Name,Home_State FROM Sample.Person
[SQL]USER>>SAVE 5sample
Query saved as: 5sample
[SQL]USER>>SELECT TOP 5 Name,Home_State FROM Sample.Person ORDER BY Home_State
2. SELECT TOP 5 Name,Home_State FROM Sample.Person ORDER BY Home_State
[SQL]USER>>SAVE 5ordered
Query saved as: 5ordered
[SQL]USER>>SELECT Name,Home_State FROM Sample.Person ORDER BY Home_State
3. SELECT Name,Home_State FROM Sample.Person ORDER BY Home_State
[SQL]USER>>
以下は、上記の例で定義された 2 つのクエリを遅延モードで実行する例です。この例では、クエリの 1 つは名前で呼び出され (呼び出し時に SQL シェルで新しい番号が割り当てられます)、もう 1 つは番号で呼び出されます。
[SQL]USER>>OPEN 5ordered
SELECT TOP 5 Name,Home_State FROM Sample.Person ORDER BY Home_State
4. SELECT TOP 5 Name,Home_State FROM Sample.Person ORDER BY Home_State
----------------------------------------------
[SQL]USER>>GO
Name Home_State
Djokovic,Josephine W. AK
Klingman,Aviel P. AK
Quine, Sam X. AK
Xiang,Robert C. AL
Roentgen,Alexandria Q. AR
5 Row(s) Affected
----------------------------------------------
[SQL]USER>>#3
SELECT Name,Home_State FROM Sample.Person ORDER BY Home_State
3. SELECT Name,Home_State FROM Sample.Person ORDER BY Home_State
----------------------------------------------
[SQL]USER>>GO
.
.
.
ECHO の設定
SET ECHO を使用して、クエリ結果を SQL シェルにエコーするかどうかを指定できます。SET ECHO=OFF と指定すると、クエリが作成され、クエリ・キャッシュが定義され、クエリが実行されます。ターミナルにクエリ結果は表示されません。これを以下の例で示しています。
[SQL]USER>>set echo=off
echo = off
[SQL]USER>>SELECT Name,Age FROM Sample.MyTest
4. SELECT Name,Age FROM Sample.MyTest
statement prepare time(s)/globals/cmds/disk: 0.0002s/5/155/0ms
execute time(s)/globals/cmds/disk: 0.0001s/0/105/0ms
cached query class: %sqlcq.USER.cls3
---------------------------------------------------------------------------
[SQL]USER>>
SET ECHO=ON (既定) と指定すると、クエリ結果がターミナルに表示されます。これを以下の例で示しています。
[SQL]USER>>set echo=on
echo = on
[SQL]USER>>SELECT Name,Age FROM Sample.MyTest
5. SELECT Name,Age FROM Sample.MyTest
Name Age
Fred Flintstone 41
Wilma Flintstone 38
Barney Rubble 40
Betty Rubble 42
4 Rows(s) Affected
statement prepare time(s)/globals/cmds/disk: 0.0002s/5/155/0ms
execute time(s)/globals/cmds/disk: 0.0002s/5/719/0ms
cached query class: %sqlcq.USER.cls3
---------------------------------------------------------------------------
[SQL]USER>>
SET ECHO は、DISPLAYMODE=CURRENTDEVICE (既定) の場合にのみ有効です。
SET ECHO と SET MESSAGES は、ターミナルに表示されるものを指定します。これらはクエリの作成と実行には影響を与えません。SET MESSAGES=OFF および SET ECHO=OFF の場合、クエリが作成され、クエリ・キャッシュが作成され、クエリ実行によってクエリ結果セットが作成されますが、ターミナルには何も返されません。
MESSAGES の設定
SET MESSAGES を使用して、クエリ・エラー・メッセージを表示するかどうか (成功した場合)、またはクエリ実行情報を表示するかどうか (成功した場合) を指定できます。
-
クエリ実行が失敗した場合 : SET MESSAGES=OFF と指定している場合、ターミナルには何も表示されません。SET MESSAGES=ON (既定) と指定している場合、クエリ・エラー・メッセージが表示されます。例 : ERROR #5540: SQLCODE: -30 Message: Table 'SAMPLE.NOTABLE' not found。
-
クエリ実行が成功した場合 : SET MESSAGES=OFF と指定している場合、クエリ結果と行 n Rows(s) Affected のみが表示されます。SET MESSAGES=ON (既定) を指定している場合、クエリ結果と行 n Rows(s) Affected に続いて、文作成のメトリック、文実行のメトリック、および生成されたクエリ・キャッシュの名前が表示されます。
作成および実行のメトリックは、経過時間 (秒の小数部単位)、グローバル参照の合計数、実行されたコマンドの合計数、およびディスク読み取り待ち時間 (ミリ秒単位) で測定されます。
SET MESSAGES=ON の場合に表示される情報が、DISPLAYMODE の設定によって変更されることはありません。一部の DISPLAYMODE オプションでは、クエリ結果セット・ファイルとメッセージ・ファイルの両方が作成されます。このメッセージ・ファイルには、SET MESSAGES=ON の場合にターミナルに表示されるクエリ作成および実行のメッセージではなく、結果セットのメッセージが含まれます。
SET MESSAGES と SET ECHO は、ターミナルに表示されるものを指定します。これらはクエリの作成と実行には影響を与えません。SET MESSAGES=OFF および SET ECHO=OFF の場合、正常なクエリが作成され、クエリ・キャッシュが作成され、クエリ実行によってクエリ結果セットが作成されますが、ターミナルには何も返されません。
LOG の設定
SET LOG を使用して、SQL シェルのアクティビティのログをファイルに記録するかどうかを指定できます。使用可能なオプションは以下のとおりです。
-
SET LOG OFF : 既定値です。InterSystems IRIS は、現在の SQL シェルのアクティビティのログを記録しません。
-
SET LOG ON : InterSystems IRIS は、SQL シェルのアクティビティのログを既定のログ・ファイルに記録します。
-
SET LOG pathname : InterSystems IRIS は、SQL シェルのアクティビティのログを、pathname で指定されたファイルに記録します。
SET LOG ON は、IRIS\mgr\namespace にログ・ファイルを作成します (namespace は、プロセスの現在のネームスペースの名前を表します)。この既定のログ・ファイル名は xsqlnnnn.log です (nnnn は、現在のプロセスのプロセス ID (pid) 番号を表します)。
既定では、ログ・ファイルは、現在のプロセスおよび現在のネームスペースに固有です。SQL シェルのアクティビティのログを、複数のプロセスまたは複数のネームスペースから同じログに記録するには、プロセスまたはネームスペースごとに SET LOG pathname を指定する際に、同じ pathname を使用します。
ログ・ファイルは、一時停止したり再開したりすることができます。ログ・ファイルを作成したら、SET LOG OFF によって、そのログ・ファイルへの書き込みが一時停止されます。また、SET LOG ON によって、既定のログ・ファイルへの書き込みが再開されます。ログ記録の再開時に、Log restarted: date time がログ・ファイルに書き込まれます。SET LOG ON では常に、既定のログ・ファイルが有効になります。したがって、指定した pathname ログ・ファイルへの書き込みを一時停止した場合は、再開時に SET LOG pathname を指定する必要があります。
ログ・ファイルの有効化によって、ターミナルに表示される SQL シェルのアクティビティのコピーが作成されますが、SQL シェルのターミナル出力にはリダイレクトされません。SQL シェルのログには、SQL の実行に失敗した場合は SQL エラーが記録され、SQL の実行に成功した場合はその SQL コードと結果として得られる行数が記録されます。SQL シェルのログには、結果セットのデータは記録されません。
ログが既に有効な場合は、SET LOG ON を指定しても効果はありません。その場合は、SET LOG pathname を指定すると、現在のログが一時停止され、pathname で指定されたログが有効になります。
PATH の設定
SET PATH schema を使用して、スキーマ検索パスを設定できます。SQL はこれを使用して、未修飾テーブル名に適切なスキーマ名を指定します。以下の例で示しているように、schema は、単一のスキーマ名でも、複数のスキーマ名のコンマ区切りリストでもかまいません。
[SQL]USER>>SET PATH cinema,sample,user
引数なしで SET PATH を使用すると、現在のスキーマ検索パスが削除され、システム全体の既定のスキーマ名に戻ります。
SET PATH schema が指定されていない場合、または指定されたスキーマでテーブルが見つからない場合、SQL シェルではシステム全体の既定のスキーマ名が使用されます。スキーマ検索パスの詳細は、"ObjectScript の使用法" の “ObjectScript マクロとマクロ・プリプロセッサ” の章で #sqlcompile path マクロを参照してください。
SELECTMODE の設定
SET SELECTMODE を使用して、クエリ・データの表示に使用するモードを指定できます。
USER>DO $SYSTEM.SQL.Shell()
SQL Command Line Shell
----------------------------------------------
The command prefix is currently set to: <<nothing>>.
Enter q to quit, ? for help.
[SQL]USER>>SET SELECTMODE DISPLAY
selectmode = display
[SQL]USER>>
使用可能なオプションは、DISPLAY、LOGICAL、および ODBC です。既定は LOGICAL です。現在のモードを決定するには、値なしで SET SELECTMODE を指定します。
[SQL]USER>>SET SELECTMODE
selectmode = logical
[SQL]USER>>
%List データは出力不能文字を使用してエンコードされます。そのため、selectmode=logical の場合、SQL シェル は %List データ値を $LISTBUILD 文として表示します。例えば、$lb("White","Green") のようになります。Time データ型は秒の小数部をサポートします。そのため、selectmode=odbc の場合、SQL シェルは秒の小数部を表示します。これは ODBC 標準に対応しません。実際の ODBC TIME データ型では小数部が切り捨てられます。
SelectMode オプションの詳細は、このドキュメントの “InterSystems IRIS SQL の基礎” の章にある “データ表示オプション” を参照してください。
また、SET SELECTMODE を使用して、入力データを表示形式から論理格納形式に変換するか指定します。このデータ変換を行うには、SQL コードが RUNTIME 選択モードを使用してコンパイルされている必要があります実行時には、SET SELECTMODE は LOGICAL (既定) に設定する必要があります。詳細は、"InterSystems SQL リファレンス" の "INSERT" または "UPDATE" 文を参照してください。
Transact-SQL のサポート
既定で、SQL シェルは InterSystems SQL コードを実行します。ただし、SQL シェルは Sybase コードまたは MSSQL コードの実行に使用できます。
DIALECT の設定
既定で、SQL シェルはコードを InterSystems SQL として解析します。SET DIALECT を使用して、Sybase コードまたは MSSQL コードを実行するように SQL シェルを構成することができます。現在の言語を変更するには、SET DIALECT で Sybase、MSSQL、または IRIS に設定します。既定値は Dialect=IRIS です。これらの SET DIALECT オプションでは、大文字と小文字は区別されません。
以下は、SQL シェルから MSSQL プログラムを実行する例です。
USER>DO $SYSTEM.SQL.Shell()
SQL Command Line Shell
----------------------------------------------
The command prefix is currently set to: <<nothing>>.
Enter q to quit, ? for help.
[SQL]USER>>SET DIALECT MSSQL
dialect = MSSQL
[SQL]USER>>SELECT TOP 5 name + '-' + ssn FROM Sample.Person
1. SELECT TOP 5 name + '-' + ssn FROM Sample.Person
Expression_1
Zweifelhofer,Maria H.-559-20-7648
Vonnegut,Bill A.-552-41-2071
Clinton,Terry E.-757-30-8013
Bachman,Peter U.-775-59-3756
Avery,Emily N.-833-18-9563
5 Rows(s) Affected
statement prepare time: 0.2894s, elapsed execute time: 0.0467s.
---------------------------------------------------------------------------
[SQL]USER>>
Sybase 言語および MSSQL 言語が言語内でサポートする SQL 文は限定されています。サポートされる文は、SELECT、INSERT、UPDATE、および DELETE です。また、CREATE TABLE 文は、永続的なテーブルに対してはサポートされますが、一時テーブルに対してはサポートされません。CREATE VIEW はサポートされます。CREATE TRIGGER と DROP TRIGGER もサポートされます。ただし、この実装では、CREATE TRIGGER 文が部分的に成功してもクラス・コンパイルに対しては失敗する場合には、トランザクション・ロールバックはサポートされません。CREATE PROCEDURE と CREATE FUNCTION はサポートされます。
COMMANDPREFIX の設定
SET COMMANDPREFIX を使用して、後続の SQL シェル・コマンドに付加する必要のある接頭語 (通常は 1 文字) を指定することができます。この接頭語は、SQL シェル・プロンプトから発行された SQL 文には使用されません。この接頭語の目的は、SQL シェル・コマンドと SQL コード文をはっきりと区別することにあります。例えば、SET は SQL シェル・コマンドであり、Sybase および MSSQL における SQL コード文でもあります。
既定では、コマンド接頭語はありません。コマンド接頭語を設定するには、SET COMMANDPREFIX=prefix を使用します (prefix は引用符なしで指定してください)。また、コマンド接頭語がない状態に戻すには、SET COMMANDPREFIX="" を使用します。以下の例は、設定、使用、および元に戻されるコマンド接頭語の / (スラッシュ文字) の例を示しています。
USER>DO $SYSTEM.SQL.Shell()
SQL Command Line Shell
----------------------------------------------------
The command prefix is currently set to: <<nothing>>.
Enter q to quit, ? for help.
[SQL]USER>>SET COMMANDPREFIX=/
commandprefix = /
[SQL]USER>>/SET LOG=ON
log = xsql4148.log
[SQL]USER>> << entering multiline statement mode >>
1>>SELECT TOP 3 Name,Age
2>>FROM Sample.Person
3>>/GO
9. SELECT TOP 3 Name,Age
FROM Sample.Person
Name Age
Frith,Jose M. 13
Finn,William D. 15
Ximines,Uma Y. 44
3 Rows(s) Affected
statement prepare time: 0.0010s, elapsed execute time: 0.0014s.
---------------------------------------------------------------------------
[SQL]USER>>/SET COMMANDPREFIX
commandprefix = /
[SQL]USER>>/SET COMMANDPREFIX=""
commandprefix = ""
[SQL]USER>>SET COMMANDPREFIX
commandprefix =
[SQL]USER>>
コマンド接頭語を設定する場合は、すべての SQL シェル・コマンドに使用する必要がありますが、?、#、および GO は例外です。これら 3 つの SQL シェル・コマンドは、コマンド接頭語があってもなくても発行することができます。
SQL シェルでは、SET コマンドまたは SET COMMANDPREFIX コマンドを発行すると、SQL シェルの初期化の一部として、また ? コマンドのオプション表示の最後に、現在のコマンド接頭語が表示されます。
RUN コマンド
SQL シェルの RUN コマンドは、SQL スクリプト・ファイルを実行します。RUN コマンドを発行する前に SET DIALECT を使用して、IRIS (InterSystems SQL)、Sybase (Sybase TSQL)、MSSQL (Microsoft SQL) のいずれかを指定する必要があります。既定の言語は IRIS です。RUN scriptname を呼び出すことも、単に RUN を呼び出してスクリプト・ファイル名の入力を求められるようにすることもできます。
RUN は、スクリプト・ファイルをロードし、ファイルに含まれるそれぞれの文を作成して実行します。スクリプト・ファイル内の文は、通常 GO 行またはセミコロン (;) で区切る必要があります。RUN コマンドによって、区切り文字を指定するように求められます。
SQL スクリプト・ファイルの結果は、現在のデバイスに表示されます。また、オプションでログ・ファイルに記録することもできます。必要に応じて、作成に失敗した文が格納されるファイルを生成することもできます。
RUN コマンドは、以下の例に示すように、これらのオプションを指定するように求めるプロンプトを返します。
[SQL]USER>>SET DIALECT=Sybase
dialect = Sybase
[SQL]USER>>RUN
Enter the name of the SQL script file to run: SybaseTest
Enter the file name that will contain a log of statements, results and errors (.log): SyTest.log
SyTest.log
Many script files contain statements not supported by IRIS SQL.
Would you like to log the statements not supported to a file so they
can be dealt with manually, if applicable? Y=> y
Enter the file name in which to record non-supported statements (_Unsupported.log): SyTest_Unsupported.log
Please enter the end-of-statement delimiter (Default is 'GO'): GO=>
Pause how many seconds after error? 5 => 3
Sybase Conversion Utility (v3)
Reading source from file:
Statements, results and messages will be logged to: SyTest.log
.
.
.
TSQL の例
以下の SQL シェルの例は、AvgAge という Sybase プロシージャを作成します。そのプロシージャが、Sybase EXEC コマンドを使用して実行されます。その後、言語が InterSystems IRIS に変更され、InterSystems SQL の CALL コマンドを使用して同じプロシージャが実行されます。
[SQL]USER>>SET DIALECT Sybase
dialect = Sybase
[SQL]USER>> << entering multiline statement mode >>
1>>CREATE PROCEDURE AvgAge
2>>AS SELECT AVG(Age) FROM Sample.Person
3>>GO
12. CREATE PROCEDURE AvgAge
AS SELECT AVG(Age) FROM Sample.Person
statement prepare time: 0.1114s, elapsed execute time: 0.4364s.
---------------------------------------------------------------------------
[SQL]USER>>EXEC AvgAge
13. EXEC AvgAge
Dumping result #1
Aggregate_1
44.35
1 Rows(s) Affected
statement prepare time: 0.0956s, elapsed execute time: 1.1761s.
---------------------------------------------------------------------------
[SQL]USER>>SET DIALECT=IRIS
dialect = IRIS
[SQL]USER>>CALL AvgAge()
14. CALL AvgAge()
Dumping result #1
Aggregate_1
44.35
1 Rows(s) Affected
statement prepare time: 0.0418s, elapsed execute time: 0.0040s.
---------------------------------------------------------------------------
[SQL]USER>>