次の方法で共有


コマンド パラメータ

更新 : 2006 年 7 月 17 日

コマンド テキスト内のパラメータは、疑問符文字でマークされます。たとえば、次の SQL ステートメントでは 1 つの入力パラメータがマークされています。

{call SalesByCategory('Produce', ?)}

SQL Native Client OLE DB プロバイダではネットワーク トラフィックを削減してパフォーマンスを向上するために、コマンドを実行する前に ICommandWithParameters::GetParameterInfo または ICommandPrepare::Prepare が呼び出されない限り、自動的にパラメータ情報が抽出されることはありません。つまり、SQL Native Client OLE DB プロバイダでは、次のことは自動的には行われません。

  • ICommandWithParameters::SetParameterInfo で指定されたデータ型の正当性を確認すること。
  • アクセサ バインド情報で指定された DBTYPE から、そのパラメータに対する適切な SQL Server データ型にマップすること。

アプリケーションで SQL Server データ型のパラメータと互換性のないデータ型を指定すると、上記のいずれかが原因で、エラーが発生したり、有効桁数が失われる可能性があります。

このようなことが起きないようにするには、アプリケーションで次の条件を満たす必要があります。

  • ICommandWithParameters::SetParameterInfo をハードコーディングしている場合、pwszDataSourceType をパラメータの SQL Server データ型と一致させます。
  • アクセサをハードコーディングしている場合、パラメータにバインドされている DBTYPE 値の型を、パラメータの SQL Server データ型と同じにします。
  • ICommandWithParameters::GetParameterInfo を呼び出すようにアプリケーションをコーディングし、プロバイダでパラメータの SQL Server データ型を動的に取得できるようにします。これにより、ネットワーク上でサーバーとの余分なやり取りが増えることに注意してください。
ms130943.note(ja-jp,SQL.90).gifメモ :
SQL Native Client OLE DB プロバイダでは、FROM 句が含まれている SQL Server UPDATE ステートメントや DELETE ステートメント、パラメータを含むサブクエリに依存する SQL ステートメント、比較の両方の式、LIKE 述部、および定量化された述語内にパラメータ マーカーを含む SQL ステートメント、またはパラメータのいずれかが、関数に対するパラメータになっているクエリの場合は、ICommandWithParameters::GetParameterInfo を呼び出すことはできません。また、SQL ステートメントをバッチ処理する場合、バッチ内の最初のステートメントの後にあるステートメント内のパラメータ マーカーに対して、ICommandWithParameters::GetParameterInfo を呼び出すことはできません。

SQL Native Client OLE DB プロバイダでは、SQL ステートメント コマンドで入力パラメータを使用できます。プロシージャ呼び出しコマンドでは、入力パラメータ、出力パラメータ、および入出力パラメータを使用できます。出力パラメータの値は、実行時 (行セットが返されない場合のみ)、または返されたすべての行セットがアプリケーションによって使用されたときにアプリケーションに返されます。返される値が有効であることを保証するには、IMultipleResults を使用して行セットを強制的に使用します。

ストアド プロシージャ パラメータの名前を DBPARAMBINDINFO 構造体で指定する必要はありません。SQL Native Client OLE DB プロバイダでパラメータ名を無視し、ICommandWithParameters::SetParameterInforgParamOrdinals メンバで指定された序数だけを使用する必要があることを示すには、pwszName メンバの値に NULL を使用します。コマンド テキストに名前付きのパラメータと名前のないパラメータの両方が含まれている場合、どの名前付きパラメータよりも前に、名前のないパラメータをすべて指定する必要があります。

ストアド プロシージャ パラメータの名前が指定された場合、SQL Native Client OLE DB プロバイダではその名前が妥当かどうかがチェックされます。SQL Native Client OLE DB プロバイダでコンシューマから不適切なパラメータ名を受け取ると、エラーが返されます。

ms130943.note(ja-jp,SQL.90).gifメモ :
SQL Native Client OLE DB プロバイダには SQL Server 2005 XML と UDT (ユーザー定義型) のサポートを公開するために、新しい ISSCommandWithParameters インターフェイスが実装されています。

参照

概念

コマンド

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2006 年 7 月 17 日

新しい内容 :
  • ICommandWithParameters::GetParameterInfo の呼び出しに関する記述を追加しました。