パラメータ クエリ (Visual Database Tools)
値を変えるだけで、繰り返し利用できるクエリを作成することが必要になる場合があります。たとえば、ある著者によって書かれたすべての title_ids を検索するクエリを頻繁に実行するような場合です。著者の ID または名前を変更するだけで、要求のたびに同じクエリを実行できます。
値を変更できるクエリを作成するには、クエリでパラメータを使用します。パラメータとは、クエリの実行時に与えられる値のプレースホルダです。パラメータを含む SQL ステートメントの例を次に示します。"?" は、著者の ID を表すパラメータを示します。
SELECT title_id
FROM titleauthor
WHERE (au_id = ?)
パラメータの使用例
パラメータは、リテラル値 (文字列または数値) のプレースホルダとして使用できます。最も一般的には、パラメータは個別の行またはグループに対する検索条件のプレースホルダとして、つまり SQL ステートメントの WHERE 句または HAVING 句内で使用されます。
式の中でプレースホルダとしてパラメータを使用することもできます。たとえば、クエリを実行するたびに異なる割引き値を指定して、割引き価格を計算できます。この計算は、次の式で行います。
(price * ?)
パラメータを使用できる場所の詳細については、「パラメータ マーカー (データベース エンジン)」を参照してください。
無名パラメータと名前付きパラメータの指定
指定できるパラメータは、無名パラメータと名前付きパラメータの 2 種類です。無名パラメータは疑問符 (?) です。リテラル値の入力を要求する、またはリテラル値を代入するクエリ内の任意の位置に挿入できます。たとえば、無名パラメータを使って titleauthor テーブルで著者の ID を検索する場合は、SQL ペインに次のようなステートメントが作成されます。
SELECT title_id
FROM titleauthor
WHERE (au_id = ?)
クエリおよびビュー デザイナでこのクエリを実行すると、[クエリ パラメータ] ダイアログ ボックスにパラメータ名として "?" が表示されます。
パラメータに名前を割り当てることもできます。名前付きパラメータは、クエリに複数のパラメータがある場合に特に便利です。たとえば、名前付きパラメータを使って authors テーブルで著者の姓名を検索する場合は、SQL ペインに次のようなステートメントが作成されます。
SELECT au_id
FROM authors
WHERE au_fname = %first name% AND
au_lname = %last name%
ヒント |
---|
名前付きパラメータ クエリを作成する前に、プレフィックスとサフィックスを定義する必要があります。 |
クエリおよびビュー デザイナでこのクエリを実行すると、[クエリ パラメータ] ダイアログ ボックスに名前付きパラメータのリストが表示されます。