クエリでのパラメータの使用

提供: RAD Studio
移動先: 案内検索

クエリタイプ データセットの使用 への移動


パラメータ付き SQL 文にはパラメータつまり変数が含まれており、その値は設計時または実行時に変更できます。パラメータは、SQL 文に現れるデータ値(WHERE 句で比較に使用されるものなど)の代わりに使用することができます。通常、パラメータは、文に渡されるデータ値の代わりに使用されます。たとえば、次の INSERT 文では、挿入する値がパラメータで渡されています。

INSERT INTO Country (Name, Capital, Population)
VALUES (:Name, :Capital, :Population)

この SQL 文では、:Name:Capital:Population は、アプリケーションで実行時に文に渡される実際の値のプレースホルダです。パラメータの名前がコロンで始まることに注意してください。コロンは、パラメータ名をリテラル値と区別するために必要です。また、クエリに疑問符(?)を追加することにより、無名パラメータを含めることもできます。無名パラメータは一意な名前を持たないため、位置で識別されます。

データセットに対してクエリを実行するには、そのクエリ テキストに含まれているパラメータに値を渡す必要があります。TQueryTIBQueryTSQLQuery、クライアント データセットでは、Params プロパティを使用してこれらの値を格納します。TADOQuery では、代わりに Parameters プロパティを使用します。Params(または Parameters)はパラメータ オブジェクト(Data.DB.TParam または Data.Win.ADODB.TParameter)のコレクションであり、その各オブジェクトが単一のパラメータを表します。クエリのテキストを指定すると、データセットはこのパラメータ オブジェクト セットを生成し、(データセットの種類に応じて)クエリから推測できるプロパティを初期化します。

メモ: ParamCheck プロパティを False に設定することにより、クエリ テキストを変更しても自動的にパラメータ オブジェクトが生成されないようにすることができます。これは、クエリそのもののパラメータでないパラメータを文の一部として含んでいるデータ定義言語(DDL)文の場合に役に立ちます。たとえば、ストアド プロシージャを作成するための DDL 文で、ストアド プロシージャの一部であるパラメータを定義する場合があります。ParamCheckFalse に設定することで、これらのパラメータがクエリのパラメータと誤って解釈されるのを防ぐことができます。

パラメータ値は、SQL 文を初めて実行する前に SQL 文にバインドする必要があります。これは、クエリを実行する前に Prepare メソッドを明示的に呼び出さなくても、クエリ コンポーネントにより自動的に行われます。

ヒント: プログラミング時には、関連付けられている列の実際の名前に対応した変数名をパラメータに付けることをお勧めします。たとえば、列名が "Number" なら、それに対応するパラメータは ":Number" となるでしょう。対応した名前を使用することは、データセットでデータ ソースを使用して別のデータセットからパラメータ値を取得する場合には特に重要です。この手順については、「パラメータを使用したマスタ/詳細関係の設定」を参照してください。

以下のトピックでは、クエリのパラメータのデータ型と値を指定する方法を説明しています。

関連項目