Home > リファレンスガイド > ユーティリティ > データマッパーユーティリティ > 送り元と送り先のプロパティペイン > [Database]プロパティ > SQL文の作成

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文のテキスト(例えば ExampleOrder By)を追加することもできます。

データマッパーでSQL文を編集する時に、変更を反映するには[保存]をクリックする必要があります。

JOINを使用することで、ステートメントで複数のテーブルを使用することができます。また、複数のテーブルがウィザードで選択された場合、JOINが自動的に作成されます。

  • Count(*) のようなSQL関数を含めるには、ステートメント内でエイリアスを使用しなければなりません。

  • DB2 for IBM iデータベースに接続するためにSQL文の中で環境変数を使用することができます。

  • NC以外の分離レベルは、DB2 / 400データベースのSQLクエリ文としてサポートされていません。

データマッパーのSQL文に関する注意事項

データベースに同じカラム名を持つ二つのテーブルが存在する場合、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文」エラーが発生します。

  • クエリ構造の定義に使用され、且つWHERE句には適用されていない変数は、フローの構築と生成されたコードの作成に同じ値が使用されるため、変更しないでください。

  • SQL文の一部として変数を使用するには、ステートメントがSELECTまたはEXECで始まる必要があります。

以下は、SQL文で変数を使用した例です。

SELECT [employee].first_name FROM <?F.Name1?> WHERE dbo.[employee].last_name = <?F.Name1?>

SQL文内のテーブル名は、バックティック( `)文字で囲まれます。 これにより、既存のプロジェクトのSQLステートメントがデータベースウィザードを使用して更新された場合、下位互換性の問題が発生する可能性があります。 下位互換性を維持するには、スタジオを再度開く前に、SQLTemplates.xmlファイルでテーブル名をラップするために使用されるバックティック文字を削除します。

(Since version: 4.13.2)