概要
Caché TSQL では、Microsoft と Sybase の両方で実装されている多彩な機能をサポートする Transact-SQL を実装しています。Transact-SQL は Microsoft SQL Server (MSSQL) および Sybase Adaptive Server と共に使用されます。
また、Caché TSQL には、Microsoft SQL Server や Sybase Adaptive Server には含まれない専用の拡張機能がいくつかあります。これらの専用の拡張機能については、"コマンド" の章を参照してください。
本ドキュメントは、Microsoft または Sybase データベースからスキーマおよびストアド・プロシージャをすばやく移行するのに役立ちます。ここでは、Caché で TSQL (Transact-SQL) を実装する方法を説明します。
はじめに
既存の TSQL アプリケーションを Caché TSQL に移行するには、次の 3 つの操作 (TSQL 用の Caché の構成、TSQL ソース・コードの移行、およびデータの移行) を実行する必要があります。
TSQL の構成
TSQL 用にシステムを構成するには、以下の手順を実行します。
-
Caché 管理ポータルに移動します。システム, 構成, SQL設定 に移動し、[TSQL互換性設定] を選択します。ここでは、言語 (Sybase または MSSQL) を指定したり、ANSI_NULLS、CASEINSCOMPARE、および QUOTED_IDENTIFIER をオンまたはオフに設定したりできます。この 3 つはいずれも既定は “オフ” です。これらの値は、^%SYS(“tsql”,”SET”,...) グローバル配列値の設定に使用します。
-
管理ポータルで、システム, 構成, SQL設定, 一般SQL設定 を選択して、[デフォルトSQLスキーマ名] を設定します。これは、すべての未修飾の DDL 構成要素の (パッケージにマップする) 宛先スキーマとなります。
-
管理ポータルで システム, 構成, SQL設定 を選択し、[ユーザ定義DDLマッピング] を選択して、必要なユーザ・データ型をマップします。
ソース・コードの移行
最初のアプリケーション移行は簡単です。
-
DDL の移行 : %SYSTEM.SQL.DDLImport()Opens in a new tab メソッド (単一ファイルの場合) または %SYSTEM.SQL.DDLImportDir()Opens in a new tab メソッド (1 つのディレクトリに複数のファイルがある場合) のいずれかを使用して、テーブルとビューの定義をインポートします。DDLMode パラメータを "MSSQLServer" または "Sybase" のいずれかに設定します。詳細は、"InterSystemsクラスリファレンス" を参照してください。
$SYSTEM.SQL.TSQL()Opens in a new tab、$SYSTEM.SQL.Sybase()Opens in a new tab、または $SYSTEM.SQL.MSSQLServer()Opens in a new tab のいずれかのメソッドを起動してスキーマをインポートすることもできます。詳細は、"InterSystemsクラスリファレンス" を参照してください。
TSQL ソースに CREATE PROC 文が含まれる場合は、CREATE PROC ソースを含むクラス・メソッドが作成されます。Caché では、このクラス・メソッドが既存のクラスに配置されるか、スキーマおよびプロシージャ名に基づく新しいクラスに配置されます。プロシージャが既に存在する場合は、既存のバージョンが新しいバージョンに置き換えられます。スキーマおよびプロシージャから生成されたクラス名に一致するクラスが既に存在する場合は、既存のクラス名が使用されます (以前に TSQL ユーティリティによって生成されている場合)。一致するクラスが存在しない場合は、スキーマおよびプロシージャ名に基づく一意のクラス名が生成されます。プロシージャが正常に作成されると、結果のクラスがコンパイルされます。ロギングが要求される場合は、ソース文が、それを含むクラス名、クラス・メソッド、および生成された仮引数と共に記録されます。プロセスで発生したエラーもログに記録されます。CREATE PROC の処理中にエラーが検出された場合、Caché では、そのプロシージャに対して生成された新しいクラスが削除されます。
-
エラーのログ・ファイルの検査 : エラー番号で検索します。エラーと正しく実行されたインポートの合計数がログの最後に表示されます。ほとんどの場合、エラーは、このドキュメントの情報を使用して回避または対処できます。
-
コンパイル : DDL をインポートすると、テーブルおよびビュー定義のコンパイルが自動的に実行されます。その他の TSQL ソース・コードをコンパイルするには、以下のようにコマンドを使用します。
DO $SYSTEM.OBJ.CompileAll("-l")
小文字の “L” 修飾子フラグによって、コンパイルの際にロックを適用しないように設定します。フラグ修飾子の完全なリストを確認するには、DO $SYSTEM.OBJ.ShowFlags() を呼び出します。
データの移行
管理ポータルで システム, SQL を選択し、[データ移行ウィザード] を選択します。
TSQL 言語の実装
TSQL プロシージャは、TSQL と同等の型である Language 型を使用して Caché メソッドまたはクエリに変換されます。次のコマンドを使用します。
DO ##class(%TSQL.Manager).load("sybase",<filename>,<logname>)
TSQL メソッドをコンパイルすると ObjectScript コードが生成されます。ネイティブの TSQL はシステム・レベルでサポートされません。見慣れた元のストアド・プロシージャの形式を生かす場合は、TSQL のメソッドを維持することができます。
-
スタジオでの TSQL の使用法
スタジオで TSQL ストアド・プロシージャ (SP) を記述および管理することができます。TSQL SP はクラス・メソッドまたはクエリです。クラス・メソッドは、パラメータを受け取って単一のスカラ結果を返します。クエリはパラメータを受け取って行を返します。単純な SELECT 文をクラス・メソッドに埋め込むと、それらの文は実行されますが、行は返されません。
-
TSQL クラス・メソッドの記述
クラス・メソッドのストアド・プロシージャを作成し、言語を tsql として入力します。以下のテンプレートをベースとして使用できます。
ClassMethod Example() As %Integer [ Language = tsql, ReturnResultSets, SqlName=name, SqlProc ] { }
-
TSQL シェルの使用法
TSQL インタープリタ・シェルは、デバッグや実験に役立ちます。詳細は、“TSQL シェルの使用法” を参照してください。
-
Caché SQL シェルの使用法
Caché SQL シェルを使用すると、DIALECT パラメータを Sybase または MSSQL に設定することによって、TSQL コードの行を実行できます。TSQL スクリプト・ファイルは、Caché SQL シェルからシェルの RUN コマンドを使用することによって実行できます。"Caché SQL の使用法" のドキュメントの “SQL シェル・インタフェースの使用法” を参照してください。
-
ダイナミック SQL の使用法
Caché ダイナミック SQL を使用すると、TSQL コード・クエリ、および他の DML 文と DDL 文の限定されたサブセットを実行できます。ダイナミック SQL では、%Dialect プロパティを Sybase または MSSQL に設定します。"Caché SQL の使用法" のドキュメントの “ダイナミック SQL の使用法” を参照してください。
-
トリガの使用法
トリガを作成して管理できます。トリガは、TSQL コード内の命令のセットであり、特定の SQL イベントに応答して実行されます。"Caché SQL の使用法" のドキュメントの “トリガの使用法” を参照してください。
-
TSQL 言語のリファレンス
Microsoft から以下の詳細な TSQL リファレンスが提供されています。
http://msdn.microsoft.com/ja-jp/library/bb545450.aspxOpens in a new tab