Parameters 集合 (ADO)
包含 Command 物件的所有 Parameter 物件。
備註
Command 物件具有由 Parameter 物件組成的 Parameters 集合。
在 Command 物件的 Parameters 集合上使用 Refresh 方法,會擷取 Command 物件中所指定預存程序或參數化查詢的提供者參數資訊。 某些提供者不支援預存程序呼叫或參數化查詢;使用這類提供者時,在 Parameters 集合上呼叫 Refresh 方法會傳回錯誤。
如果您尚未定義自己的 Parameter 物件,而且在呼叫 Refresh 方法之前存取 Parameters 集合,ADO 會自動呼叫方法,並為您填入集合。
如果您知道與所要呼叫的預存程序或參數化查詢相關聯的參數屬性,則可以將對提供者的呼叫降至最低以改善效能。 使用 CreateParameter 方法,搭配適當的屬性設定建立 Parameter 物件,並使用 Append 方法,將其新增至 Parameters 集合。 這可讓您設定並傳回參數值,而不必呼叫提供者以取得參數資訊。 如果您要寫入未提供參數資訊的提供者,則必須使用此方法手動填入 Parameters 集合,才能完全使用參數。 如有必要,請使用 Delete 方法,從 Parameters 集合中移除 Parameter 物件。
當 Recordset 關閉時,Recordset 的 Parameters 集合物件超出範圍 (因此變成無法使用)。
使用 Command 呼叫預存程序時,會擷取預存程序的傳回值/輸出參數,如下所示:
呼叫沒有參數的預存程序時,應該先呼叫 Parameters 集合上的 Refresh 方法,再呼叫 Command 物件上的 Execute 方法。
呼叫具有參數的預存程序,並使用 Append 明確地將參數附加至 Parameters 集合時,應該將傳回值/輸出參數附加至 Parameters 集合。 傳回值必須先附加至 Parameters 集合。 使用 Append,依定義順序將其他參數新增至 Parameters 集合。 例如,預存程序 SPWithParam 具有兩個參數。 第一個參數 (InParam) 是定義為 adVarChar (20) 的輸入參數,而第二個參數 (OutParam) 則是定義為 adVarChar (20) 的輸出參數。 您可以使用下列程式碼擷取傳回值/輸出參數。
' Open Connection Conn set ccmd = CreateObject("ADODB.Command") ccmd.Activeconnection= Conn ccmd.CommandText="SPWithParam" ccmd.commandType = 4 'adCmdStoredProc ccmd.parameters.Append ccmd.CreateParameter(, adInteger, adParamReturnValue, , NULL) ' return value ccmd.parameters.Append ccmd.CreateParameter("InParam", adVarChar, adParamInput, 20, "hello world") ' input parameter ccmd.parameters.Append ccmd.CreateParameter("OutParam", adVarChar, adParamOutput, 20, NULL) ' output parameter ccmd.execute() ' Access ccmd.parameters(0) as return value of this stored procedure ' Access ccmd.parameters("OutParam") as the output parameter of this stored procedure.
呼叫具有參數的預存程序,並在 Parameters 集合上呼叫 Item 方法來設定參數時,可以從 Parameters 集合擷取預存程序的傳回值/輸出參數。 例如,預存程序 SPWithParam 具有兩個參數。 第一個參數 (InParam) 是定義為 adVarChar (20) 的輸入參數,而第二個參數 (OutParam) 則是定義為 adVarChar (20) 的輸出參數。 您可以使用下列程式碼擷取傳回值/輸出參數。
' Open Connection Conn set ccmd = CreateObject("ADODB.Command") ccmd.Activeconnection= Conn ccmd.CommandText="SPWithParam" ccmd.commandType = 4 'adCmdStoredProc ccmd.parameters.Item("InParam").value = "hello world" ' input parameter ccmd.execute() ' Access ccmd.parameters(0) as return value of stored procedure ' Access ccmd.parameters(2) or ccmd.parameters("OutParam") as the output parameter.
本節包含下列主題。