次の方法で共有


SQL Server Native Client (OLE DB) の ISSCommandWithParameters::SetParameterProperties

適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

重要

SQL Server Native Client (SNAC と略されることがよくあります) は、SQL Server 2022 (16.x) と SQL Server Management Studio 19 (SSMS) から削除されました。 SQL Server Native Client OLE DB プロバイダー (SQLNCLI または SQLNCLI11) とレガシ Microsoft OLE DB Provider for SQL Server (SQLOLEDB) はどちらも、新しい開発には推奨されません。 今後は、新しい Microsoft OLE DB Driver (MSOLEDBSQL) for SQL Server に切り替えてください。

序数順に各パラメーターのパラメーター プロパティを設定するか、SSPARAMPROPS 構造体の配列を指定して、一括でパラメーター プロパティを設定します。

構文

HRESULT SetParameterProperties(  
      DB_UPARAMS cParams,   
      SSPARAMPROPS rgParamProperties[]);  

引数

cParams[in]
rgParamProperties 配列内の SSPARAMPROPS 構造体の数。 この数が 0 の場合、ISSCommandWithParameters::SetParameterProperties では、コマンドのパラメーターに指定されているすべてのプロパティを削除します。

rgParamProperties[in]
設定する SSPARAMPROPS 構造体の配列。

リターン コードの値

ISSCommandWithParameters::SetParameterProperties メソッドでは、主要な OLE DB ICommandProperties::SetProperties メソッドと同じエラー コードを返します。

解説

このメソッドを使用したパラメーター プロパティの設定は、各パラメーターに対して序数順に行うか、プロパティ配列から SSPARAMPROPS が構築されるたびに ISSCommandWithParameters::SetParameterProperties を 1 回呼び出すことによって行うことができます。

ISSCommandWithParameters::SetParameterProperties メソッドを呼び出す前に、SetParameterInfo メソッドを呼び出す必要があります。 SetParameterProperties(0, NULL) を呼び出すと、指定したパラメーター プロパティがすべて消去されます。また、SetParameterInfo(0,NULL,NULL) を呼び出すと、パラメーターに関連付けられているすべてのプロパティを含めて、パラメーターに関するすべての情報が消去されます。

ISSCommandWithParameters::SetParameterProperties を呼び出して、DBTYPE_XML型またはDBTYPE_UDT型ではないパラメーターのプロパティを指定し、DB_E_ERRORSOCCURREDまたはDB_S_ERRORSOCCURREDを返し、そのパラメーターの SSPARAMPROPS に含まれるすべての DBPROP の dwStatus フィールドにDBPROPSTATUS_NOTSETマークを付けます。 DB_E_ERRORSOCCURRED または DB_S_ERRORSOCCURRED が指しているパラメーターを検出するには、SSPARAMPROPS に含まれている各 DBPROPSET の DBPROP 配列をすべて調べる必要があります。

ISSCommandWithParameters::SetParameterProperties を呼び出すときに、SetParameterInfo によって情報が設定されていないパラメーターのプロパティを指定すると、プロバイダーは次のエラー メッセージと共に E_UNEXPECTED を返します。

パラメーターを指定して SetParameterProperties メソッドを呼び出す場合は、最初に SetParameterInfo メソッドを呼び出す必要があります。 パラメーターのプロパティを設定する前に、パラメーター情報を設定する必要があります。

ISSCommandWithParameters::SetParameterProperties を呼び出すときに、情報が設定されているパラメーターと設定されていないパラメーターが含まれている場合、SSPARAMPROPS プロパティ セットの DBPROPSET 内の dwStatus プロパティに DBSTATUS_NOTSET が設定されて返されます。

SSPARAMPROPS 構造体は、次のように定義されています。

struct SSPARAMPROPS {
    DBORDINAL iOrdinal;
    ULONG cPropertySets;
    DBPROPSET *rgPropertySets;
};

SQL Server 2012 (11.x) 以降のデータベース エンジンの機能強化により、ISSCommandWithParameters::SetParameterProperties では、期待される結果のより正確な記述を取得できるようになりました。 結果がより正確になり、以前のバージョンの SQL Server で ISSCommandWithParameters::SetParameterProperties から返される値とは異なる可能性があります。 詳細については、「メタデータの検出」を参照してください。

メンバー 説明
iOrdinal 渡されるパラメーターの序数
cPropertySets rgPropertySets 内の DBPROPSET 構造体の数
rgPropertySets DBPROPSET 構造体の配列を返すメモリへのポインター

参照

ISSCommandWithParameters (OLE DB)