D-SQLバインディングは、Oracleデータベースでのみ該当します。
ダイレクトSQLタスクを使用するとき、Magic xpaはSQLステートメントを動的に作成した後にデータベースに送ります。データベースはSQLステートメントを文字または数値文字列の値として受け取り、SQLステートメントを解析して実行します。
解析段階は、ステートメントを翻訳して、その有効性のチェックを行います。そして、カラムとテーブル定義をチェックして、権利をチェックして、ステートメントを実行するために最適な方法を見つけ出します。
SQLステートメントの要素は、事前に定義された値に対するプレイスホルダーとなります。プレイスホルダーを値と入れ替えることはバインディングと呼ばれています。これにより、データベースによってSQLステートメントを再解析するプロセスを回避できます。
分析されたステートメントは、共有SQLエリアに保存されます。ステートメントが同じものとして確認されたものだけが、次のステートメントで再生利用されます。
例::
select * from orders_line where order_line=1 |
2番目のステートメントが以下のような場合:
select * from orders_line where order_line=2 |
SQLステートメントが複雑になると、分析プロセスに時間がかかる場合があります。バインディングはパラメータとして値を送ることを許可し、分析段階でより一般的なステートメントを許可します。分析の後、値はパラメータ内のステートメントとバインドされ、ステートメントが実行されます。
Magic xpaの暗黙のプログラムは、最適なパフォーマンスを考慮に入れるために、自動的にバインディングを使用します。
ダイレクトSQLタスクでは、パラメータは値だけでなくステートメント自体の要素でもあります。デフォルトでは、Magic xpaはダイレクトSQLタスクでバインディングを使用しません。ステートメントは、値と一緒にデータベースに送られ、分析において再利用できません。
バインディング変数として項目を指定するには、パラメータは入力引数でコロン(:)の代わりに、チルダ文字(~)で記述しなければなりません。Magic xpaは、そのデータ型に基づいて~1を適切な値と入れ替えます。
例:
Select * from orders_lines where order_line = ~1 |
バインディングは、Magic xpaの文字型、論理型、数値型でサポートされます。シングルクォーテーション('')は、文字型パラメータでは必要ありません。Magic xpaは、日付型、時刻型、論理型、数値型のデータを数値としてを保存します。
Oracleの並行データ型が数値の場合、バインディング機能を使用することができます。
注意: |
数値式が使用される場合、Magic xpaはクォーテーションで囲みます。クォーテーションを使用したくない場合は、式の代わりにバウンド項目を使用してください。 |
バインディング制約
バインディングは、以下のデータベースとゲートウェイ規制のもとで使用することができます。
出力を返すSelectステートメントまたはストアドプロシージャーだけでバインディングを使用することができます。
フィールド名のためにでなく、値のためにだけバインディングを使用することができます。
バウンド(~)とアンバウンドパラメータが指定されたSQLステートメントは、バインディング項目の恩恵を排除します。
注意: |
~5 =0(カラム名を意味すると思われるバウンド式)のような式の使用はサポートできません。 |