共用方式為


SQL Server Native Client 中的 ISSCommandWithParameters::SetParameterProperties (OLE DB)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsAnalytics 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 結構的數目。 如果這個數目為零,則 ISSCommandWithParameters::SetParameterProperties 會刪除可能已針對命令中的任何參數所指定的所有屬性。

rgParamProperties[in]
要設定的 SSPARAMPROPS 結構的陣列。

傳回碼值

ISSCommandWithParameters::SetParameterProperties 方法所傳回的錯誤碼與核心 OLE DB ICommandProperties::SetProperties 方法相同。

備註

您可以依序數按照每個參數使用這個方法來設定參數屬性,或在從屬性陣列建立 SSPARAMPROPS 之後,使用單一的 ISSCommandWithParameters::SetParameterProperties 呼叫來設定參數屬性。

在呼叫 ISSCommandWithParameters::SetParameterProperties 方法之前,必須先呼叫 SetParameterInfo 方法。 呼叫 SetParameterProperties(0, NULL) 會清除所有指定的參數屬性,呼叫 SetParameterInfo(0,NULL,NULL) 則會清除所有的參數資訊,包括任何可能與參數相關聯的屬性。

呼叫 ISSCommandWithParameters::SetParameterProperties 來指定非類型參數的屬性DBTYPE_XML或DBTYPE_UDT會傳回DB_E_ERRORSOCCURRED或DB_S_ERRORSOCCURRED,並以 DBPROPSTATUS_NOTSET 標記 SSPARAMPROPS 中包含的所有 DBPROPs 的 dwStatus 欄位。 系統會周遊 SSPARAMPROPS 中包含的每個 DBPROPSET 的 DBPROP 陣列,以偵測 DB_E_ERRORSOCCURRED 或 DB_S_ERRORSOCCURRED 所參考的是哪一個參數。

如果呼叫 ISSCommandWithParameters::SetParameterProperties 來指定參數 (尚未使用 SetParameterInfo 設定其參數資訊) 的屬性,則提供者會傳回 E_UNEXPECTED 且顯示下列錯誤訊息:

必須先針對指定的參數呼叫 SetParameterInfo 方法,然後才能呼叫 SetParameterProperties 方法。 而在設定參數屬性之前,也必須先設定參數資訊。

如果 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 所傳回的值不同。 如需詳細資訊,請參閱中繼資料探索

member 描述
iOrdinal 所傳遞參數的序數。
cPropertySets rgPropertySets 中的 DBPROPSET 結構數目。
rgPropertySets 藉其傳回 DBPROPSET 結構陣列的記憶體指標。

另請參閱

ISSCommandWithParameters (OLE DB)