$SYSTEM.SQL.Schema.ImportDDLDir(DDLMode, directory, logfile, EOSDelimiter)
DDLMode : スクリプト・ファイルのインポート元のベンダ。このパラメータは必須です。唯一許可される値が Informix です。
directory : インポート先のディレクトリのフル・パス名。このパラメータは必須です。
logfile : エラーの報告先のログ・ファイルのフル・パス名または数字の 1。このパラメータはオプションです。既定値は、読み込まれるディレクトリ内の DDLImportDir.log です。このパラメータ値が 1 の場合、読み込まれるファイルごとに個別のログ・ファイルが生成されます。各ログ・ファイルの名前は、インポートされるファイルの名前と同じですが、拡張子が .sql ではなく .log になります。
EOSDelimiter : 文末区切り文字。このパラメータはオプションです。%DDLMode の値に基づいて適切な値が既定値となります。
詳細は、"InterSystemsクラスリファレンス" を参照してください。
また、$SYSTEM.SQL.Schema.LoadInformix()Opens in a new tab メソッドを呼び出してスキーマをインポートすることもできます。このメソッドでは、CREATE TABLE、ALTER TABLE、CREATE INDEX、CREATE VIEW、SET OPTION、および GRANT の各文がサポートされます。詳細は、"InterSystemsクラスリファレンス" を参照してください。
ISQL ソースに CREATE PROC 文が含まれる場合は、CREATE PROC ソースを含むクラス・メソッドが作成されます。InterSystems IRIS では、このクラス・メソッドが既存のクラスに配置されるか、スキーマおよびプロシージャ名に基づく新しいクラスに配置されます。プロシージャが既に存在する場合は、既存のバージョンが新しいバージョンに置き換えられます。スキーマおよびプロシージャから生成されたクラス名に一致するクラスが既に存在する場合は、既存のクラス名が使用されます (以前に ISQL ユーティリティによって生成されている場合)。一致するクラスが存在しない場合は、スキーマおよびプロシージャ名に基づく一意のクラス名が生成されます。プロシージャが正常に作成されると、結果のクラスがコンパイルされます。
ロギングが要求される場合は、ソース文が、それを含むクラス名、クラス・メソッド、および生成された仮引数と共に記録されます。プロセスで発生したエラーもログに記録されます。CREATE PROC の処理中にエラーが検出された場合、InterSystems IRIS では、そのプロシージャに対して生成された新しいクラスが削除されます。
エラーのログ・ファイルの検査 : エラー番号で検索します。エラーと正しく実行されたインポートの合計数がログの最後に表示されます。ほとんどの場合、エラーは、このドキュメントの情報を使用して回避または対処できます。
InterSystems IRIS には、Informix エラー・コードおよびメッセージ、および対応する InterSystems SQLCODE エラー・コードおよびメッセージを相互参照するための %XSQL.System.CacheMessageXRef クラスが用意されています。
コンパイル : DDL をインポートすると、テーブルおよびビュー定義のコンパイルが自動的に実行されます。その他の ISQL ソース・コードをコンパイルするには、以下のようにコマンドを使用します。
DO $SYSTEM.OBJ.CompileAll("-l")
小文字の “L” 修飾子フラグによって、コンパイルの際にロックを適用しないように設定します。フラグ修飾子の完全なリストを確認するには、DO $SYSTEM.OBJ.ShowFlags() を呼び出します。
ISQL メソッドをコンパイルすると ObjectScript コードが生成されます。ネイティブの ISQL はシステム・レベルでサポートされません。見慣れた元のストアド・プロシージャの形式を生かす場合は、ISQL のメソッドを維持することが最善です。
データの移行
管理ポータルで、[システムエクスプローラ]、[SQL] の順に選択します。[ウィザード] ドロップダウン・リストから [データ移行] を選択します。
Informix ROWID
プロシージャ変換ユーティリティは、ROWID の ISQL 列参照を %ID に変換します。Informix では、ROWID 列は、WITH ROWIDS 節を使用して作成された断片化されているテーブルや断片化されていないテーブルの非表示列です。ROWID 列は行ごとに固有ですが、必ずしも連続する必要はありません。InterSystems SQL では、ROWID 列は %ID に相当します。
NULL および空文字列の処理
Informix では、文字列データ型 CHAR および VARCHAR では、空文字列 ("") は単一の空白 (" ") とまったく同じように処理されます。数値、時刻、および日付のデータ型すべてにおいて、空文字列 ("") は NULL として処理されます。
文字列を連結する場合、NULL を string に連結すると、NULL になります。空文字列を string に連結しても、string には何も影響がありません。
末尾の空白文字列
ObjectScript で末尾の空白文字列は自動的に切り捨てられます。これは、CHAR と VARCHAR の両方のデータ型に当てはまります。これは、Informix の標準の動作とは異なるため、データの移行時に重要な考慮事項となる可能性があります。
DATETIME データ型
InterSystems IRIS では、Informix DATETIME データ型を %Library.InformixTimestamp データ型クラスにマップすることにより、このデータ型をサポートしています。Informix には、完全な日付や時刻は必要ありません。Informix では、修飾子を使用して、日付と時刻のコンポーネントの範囲が指定されます。InterSystems IRIS では、最大および最小の修飾子を指定するための構文がサポートされます。YEAR TO DAY 修飾子は、DATE データ型としてマップされます。MINUTE TO SECOND 修飾子は、TIME データ型としてマップされます。その他すべての修飾子は %Library.InformixTimeStamp としてマップされます。例えば、YEAR TO SECOND および HOUR TO SECOND などがあります。
InterSystems IRIS では、DATETIME 算術がサポートされます。InterSystems IRIS では、DATE、TIME、TIMESTAMP、および INTERVAL に対して加算と減算の演算がサポートされます。
SERIAL データ型
InterSystems IRIS では、Informix SERIAL データ型を %Library.Counter データ型にマップすることにより、これをサポートしています。特定のフィールドがデータ型 %Counter として定義されている場合、InterSystems IRIS では SQL INSERT の実行時に、そのフィールドに値が挿入されない、0 (ゼロ) が挿入される、または数値以外の値が挿入されるときに、カウンタ値が 1 ずつ増加され、結果のカウンタ値がこのフィールドに割り当てられます。正の整数値をこのフィールドに明示的に挿入する場合は、その値を挿入します。また、必要に応じて、カウンタ・ノードの値が指定フィールド値を下回らないように、カウンタ・ノードの値を進めます。
%Counter 型で定義されているフィールドに UNIQUE 制約が自動的に作成されることはありません。値が必ず UNIQUE になるようにする場合は、そのプロパティに独自の UNIQUE インデックスを作成する必要があります。
%Counter フィールドとして定義されているフィールドは、そのフィールドの古い値が 0 または NULL でない限り更新されない場合があります。データが含まれる既存テーブルに %Counter フィールドを追加してから戻り、既存の行で %Counter フィールドにデータを入力する場合、これが当てはまる場合があります。このとき、%Counter フィールドを更新しようとすると、SQLCODE -105 エラーと %msg テキストが生成されます。
InterSystems SQL %Counter データ型には、Informix SERIAL データ型と同様の機能が用意されています。Informix では、テーブルごとに 1 つの SERIAL フィールドという制限がありますが、InterSystems IRIS には、テーブルごとに定義する %Counter フィールドの数に制限はありません。
ISQL 言語の実装
MATCHES 演算子
ISQL では、パターン・マッチング用に MATCHES 演算子がサポートされています。この演算子では、0 以上の文字を表すために使用できる * ワイルドカード文字がサポートされています。
DEFINE var LIKE コマンド
DEFINE var LIKE column 文では、特定の列のデータ型に基づいて、特定のローカル変数のデータ型が定義されます。このコマンドは、変換時に列参照を解決できる場合に使用できます。
LET コマンド
LET コマンドは、変数に値を割り当てるために使用します。以下のように、複数の変数への割り当てに使用できます。
LET a,b = c,d;
サポートしている関数
Informix コンパイラでは、以下の Informix 関数がサポートされます。