Home > リファレンスガイド > ユーティリティ > データマッパーユーティリティ > 送り元と送り先のプロパティペイン > [Database]プロパティ > SQL文の作成
データベース送り元でをクリックするか、送り先の[SQL文]パラメータでをクリックすると、[SQL文]ウィンドウが開きます。 [SQL文]フィールドに入力するSQL文は、データベーススクリプトに関する基本的なルールに依存します。
データマッパー送り元はSELECT文のみサポートしています。データマッパー送り先はUPDATE、INSERT、DELETE文のみサポートしています。環境変数を使用してステートメントを動的に変換することができます。
完全なステートメントが正しいSQL文であれば、ステートメントを編集したり、様々なSQLテキストを追加することができます。Where句の全体または一部を保持するために変数は使用できませんが、代わりに環境変数を使用することができます。
SQL文を作成するためのウィザードによって使用されるテンプレートは、<Magic xpi のインストールフォルダ>\Studio\Templates\Database フォルダに SQLTemplates.xml という名前で外部のXMLファイルとして配置されています。このファイルには、一般的なテンプレートとDBMS固有のテンプレートが含まれていて、特定のDBMSのために修正することができます。Since version: 4.5
変数は、フィールドの値としてのみ使用できます。
フロー変数が入力されると、山括弧と疑問符で自動的に囲まれます(<? フロー変数名?>)。別のSQL文のテキスト(例えば Exampleや Order By)を追加することもできます。
データマッパーでSQL文を編集する時に、変更を反映するには[保存]をクリックする必要があります。
JOINを使用することで、ステートメントで複数のテーブルを使用することができます。また、複数のテーブルがウィザードで選択された場合、JOINが自動的に作成されます。
|
データマッパーのSQL文に関する注意事項
すべてのデータベースタイプをサポートするため、SQL文ではANSI記号を使用してください。
データマッパーでは、#、*、&、%、@などの特殊文字はフィールド名として使用できません。SQL文のフィールド名として特殊文字が使用された場合、これらの文字はデータマッパーには表示されません。
MSSQLデータベースの列名に特殊文字が含まれている場合は、角括弧でカプセル化する必要があります。 この設定はデータマッパーウィザードのサマリ画面で実行できます。角括弧のカプセル化は、SQLTemplates.xmlファイルで行うこともできます。 SQLTemplates.xmlを変更することにより、データマッパーウィザードによって生成されたSQLステートメントには自動的に中括弧が付き、ユーザーはステートメントを手動で変更する必要がなくなります。
データマッパーでは、フィールド名にスペースを使用することはできません。
文字列はシングルクオーテーション(')で囲む必要があります。
他のデータベースに接続するには、データベースのオーナを指定する必要があります。プロジェクトで使用しているMagic xpi内部データベースに接続する場合は、オーナを指定する必要はありません。
フィールドまたは関数にワイルドカードを使用することはできません。フィールドと関数はそれぞれ指定するか、エイリアスを作成する必要があります。
データマッパーのSQLウィンドウは、SQL文に追加されたフォーマットの変更を保存します。
SQL文をビルド時、値は式の中に格納されます。式の中の値は最高32,000文字を含めることができます。値が32,000文字より大きい場合、式の最後が無くなる旨のエラーが表示されます。しかし、Magic xpiではなくデータベース自身による制限のみでステートメントを作成する場合は、複数の式を結合することができます。
データベースに同じカラム名を持つ二つのテーブルが存在する場合、Magic xpiは二つを区別できません。この場合、Magic xpiは二つ目のカラムを無視します。これを防ぐにはSELECT文でカラム名にエイリアスを追加する必要があります。 例えば、以下のような記述を考えます。 SELECT t1.Customer,t2.customer from t1,t2 上記の代わりに、以下のように記述することができます。 SELECT t1.customer AS customer1,t2.customer AS customer2 from t1,t2 |
SQL文内の変数サポート
(Since version: 4.13.1)
データマッパーのSQL文は、クエリ(SELECTステートメント)およびプロシージャ(EXECステートメント)の変数をサポートします。 変数タグは、SELECT句、WHERE句など、SQL文の任意の場所に配置できます。 Studioは変数のデフォルト値を取得し、実行時に変数の現在の値が使用されます。
Sample Use Cases:
SQL文のORDERBYセグメントを変数で定義できます。 これにより、マッパーステップで、実行時にさまざまなデータセットに基づいて柔軟に並べ替えることができます。
テーブル名を変数のデフォルト値として定義できます。 これにより、同様のテーブルの異なる所有者を参照できるようになります。 実行時に、共通の列を持つ2つの異なるテーブルを指定して参照することができます。
リポジトリに変数のデフォルト値が設定されていない場合、マッパーの解析により「無効なSQL文」エラーが発生します。
|
以下は、SQL文で変数を使用した例です。
SELECT [employee].first_name FROM <?F.Name1?> WHERE dbo.[employee].last_name = <?F.Name1?>
SQL文内のテーブル名は、バックティック( `)文字で囲まれます。 これにより、既存のプロジェクトのSQLステートメントがデータベースウィザードを使用して更新された場合、下位互換性の問題が発生する可能性があります。 下位互換性を維持するには、スタジオを再度開く前に、SQLTemplates.xmlファイルでテーブル名をラップするために使用されるバックティック文字を削除します。 (Since version: 4.13.2) |