共用方式為


程序參數

程序呼叫中的參數可以是輸入、輸入/輸出或輸出參數。 這與其他所有 SQL 陳述式中的參數不同,這些陳述式一律為輸入參數。

輸入參數用來將值傳送至程序。 例如,假設 [組件] 資料表有 PartID、Description 和 Price 資料行。 InsertPart 程序可能有資料表中每個資料行的輸入參數。 例如:

{call InsertPart(?, ?, ?)}  

SQLExecDirectSQLExecute 傳回 SQL_SUCCESS、SQL_SUCCESS_WITH_INFO、SQL_ERROR、SQL_INVALID_HANDLE 或 SQL_NO_DATA 之前,驅動程式不應該修改輸入緩衝區的內容。 當 SQLExecDirectSQLExecute 傳回 SQL_NEED_DATA 或 SQL_STILL_EXECUTING 時,不應該修改輸入緩衝區的內容。

輸入/輸出參數用來將值傳送至程序,並從程序擷取值。 使用與輸入和輸出參數相同的參數通常令人困惑,而且應該避免。 例如,假設程序接受訂單識別碼,並傳回客戶的識別碼。 這可以使用單一輸入/輸出參數來定義:

{call GetCustID(?)}  

最好使用兩個參數:輸入參數用於訂單識別碼,而輸出或輸入/輸出參數用於客戶識別碼:

{call GetCustID(?, ?)}  

輸出參數用來擷取程序傳回值,以及從程序引數擷取值;傳回值的程序有時稱為函式。 例如,假設剛才提及的 GetCustID 程序傳回的值可指出其是否能夠找到訂單。 在下列呼叫中,第一個參數是用來擷取程序傳回值的輸出參數、第二個參數是用來指定訂單識別碼的輸入參數,而第三個參數則是用來擷取客戶識別碼的輸出參數:

{? = call GetCustID(?, ?)}  

驅動程式會處理程序中輸入與輸入/輸出參數的值,與其他 SQL 陳述式中的輸入參數沒有區別。 執行陳述式時,驅動程式會擷取繫結至這些參數的變數值,並將其傳送至資料來源。

執行陳述式之後,驅動程式會將輸入/輸出和輸出參數的傳回值儲存在繫結至那些參數的變數中。 在擷取程序傳回的所有結果,且 SQLMoreResults 傳回 SQL_NO_DATA 之前,無法保證設定這些傳回的值。 如果執行陳述式會導致錯誤,則不會定義輸入/輸出參數緩衝區或輸出參數緩衝區的內容。

應用程式會呼叫 SQLProcedure 來判斷程序是否有傳回值。 其會呼叫 SQLProcedureColumns 來判斷每個程序參數的類型 (傳回值、輸入、輸入/輸出或輸出)。