ダイレクトSQL バインディング

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はクォーテーションで囲みます。クォーテーションを使用したくない場合は、式の代わりにバウンド項目を使用してください。

バインディング制約

バインディングは、以下のデータベースとゲートウェイ規制のもとで使用することができます。

バウンド(~)とアンバウンドパラメータが指定されたSQLステートメントは、バインディング項目の恩恵を排除します。

注意:

~5 =0(カラム名を意味すると思われるバウンド式)のような式の使用はサポートできません。