パラメーターはコマンド テキストで疑問符文字でマークされます。 たとえば、次の SQL ステートメントは 1 つの入力パラメーターとしてマークされます。
{call SalesByCategory('Produce', ?)}
ネットワーク トラフィックを減らすことでパフォーマンスを向上させるために、コマンドを実行する前に ICommandWithParameters::GetParameterInfo または ICommandPrepare::P repare が呼び出されない限り、SQL Server Native Client OLE DB プロバイダーはパラメーター情報を自動的に派生させません。 つまり、SQL Server Native Client OLE DB プロバイダーは自動的には実行されません。
ICommandWithParameters::SetParameterInfo で指定されたデータ型の正確性を確認します。
アクセサー バインディング情報で指定された DBTYPE から、パラメーターの正しい SQL Server データ型にマップします。
パラメーターの SQL Server データ型と互換性のないデータ型を指定すると、これらのメソッドのいずれかでエラーが発生したり、有効桁数が失われたりする可能性があります。
これが発生しないように、アプリケーションは次のことを行う必要があります。
ICommandWithParameters::SetParameterInfo をハードコーディングする場合は、pwszDataSourceType がパラメーターの SQL Server データ型と一致することを確認します。
アクセサーをハードコーディングする場合は、パラメーターにバインドされている DBTYPE 値が、パラメーターの SQL Server データ型と同じ型であることを確認します。
プロバイダーがパラメーターの SQL Server データ型を動的に取得できるように、 ICommandWithParameters::GetParameterInfo を呼び出すアプリケーションをコーディングします。 これにより、サーバーへの余分なネットワーク ラウンド トリップが発生します。
注
プロバイダーは、FROM 句を含む SQL Server UPDATE または DELETE ステートメントに対する ICommandWithParameters::GetParameterInfo の呼び出しをサポートしていません。パラメーターを含むサブクエリに応じた任意の SQL ステートメントの場合。比較の両方の式にパラメーター マーカーを含む SQL ステートメントの場合 (例: 量指定された述語)。または、いずれかのパラメーターが関数のパラメーターであるクエリ。 SQL ステートメントのバッチを処理する場合、プロバイダーは、バッチ内の最初のステートメントの後のステートメント内のパラメーター マーカーに対 する ICommandWithParameters::GetParameterInfo の呼び出しもサポートしません。 コメント (/* */) は、Transact-SQL コマンドでは使用できません。
SQL Server Native Client OLE DB プロバイダーは、SQL ステートメント コマンドの入力パラメーターをサポートしています。 プロシージャ コール コマンドでは、SQL Server Native Client OLE DB プロバイダーは入力、出力、および入力/出力パラメーターをサポートします。 出力パラメーター値は、実行時 (返される行セットがない場合のみ) または返されるすべての行セットがアプリケーションによって使い果たされたときに、アプリケーションに返されます。 返された値が有効であることを確認するには、 IMultipleResults を使用して行セットを強制的に使用します。
ストアド プロシージャ パラメーターの名前は、DBPARAMBINDINFO 構造体で指定する必要はありません。 pwszName メンバーの値に NULL を使用して、SQL Server Native Client OLE DB プロバイダーがパラメーター名を無視し、ICommandWithParameters::SetParameterInfoの rgParamOrdinals メンバーで指定された序数のみを使用することを示します。 コマンド テキストに名前付きパラメーターと名前なしパラメーターの両方が含まれている場合は、名前付きパラメーターの前にすべての名前のないパラメーターを指定する必要があります。
ストアド プロシージャ パラメーターの名前が指定されている場合、SQL Server Native Client OLE DB プロバイダーは、その名前が有効であることを確認します。 SQL Server Native Client OLE DB プロバイダーは、コンシューマーから誤ったパラメーター名を受け取るとエラーを返します。
注
SQL Server XML およびユーザー定義型 (UDT) のサポートを公開するために、SQL Server Native Client OLE DB プロバイダーは新しい ISSCommandWithParameters インターフェイスを 実装します。