如何:使用 SQLSRV 驅動程式指定參數方向
本主題說明在呼叫預存程序時,如何使用 SQLSRV 驅動程式來指定參數方向。 參數方向是在您建構傳遞至 sqlsrv_query 或 sqlsrv_prepare 的參數陣列 (步驟 3) 時指定。
指定參數方向
定義會呼叫預存程序的 Transact-SQL 查詢。 請使用問號 (?) 來取代要傳遞至預存程序的參數。 例如,下列字串會呼叫可接受兩個參數的預存程序 (UpdateVacationHours):
$tsql = "{call UpdateVacationHours(?, ?)}";
注意
使用標準語法呼叫預存程序,是建議的做法。 如需標準語法的詳細資訊,請參閱呼叫預存程序。
初始化或更新對應至 Transact-SQL 查詢中預留位置的 PHP 變數。 例如,下列程式碼會為 UpdateVacationHours 預存程序初始化兩個參數:
$employeeId = 101; $usedVacationHours = 8;
注意
初始化或更新為 null、 DateTime或資料流類型的變數,無法做為輸出參數。
使用步驟 2 中的 PHP 變數來建立或更新依序對應至 Transact-SQL 字串中參數預留位置的參數值陣列。 指定陣列中每個參數的方向。 每個參數的方向可由下列兩種方式之一來決定:根據預設 (適用於輸入參數),或使用 SQLSRV_PARAM_ 常數 (適用於輸出和雙向參數)。 例如,下列程式碼會將 $employeeId 參數指定為輸入參數,並將 $usedVacationHours 參數指定為雙向參數:
$params = array( array($employeeId, SQLSRV_PARAM_IN), array($usedVacationHours, SQLSRV_PARAM_INOUT) );
為了大致了解指定參數方向的語法,我們假設 $var1、 $var2和 $var3 分別對應至輸入、輸出和雙向參數。 您可以透過下列其中一種方式來指定參數方向:
隱含地指定輸入參數、明確地指定輸出參數及雙向參數:
array( array($var1), array($var2, SQLSRV_PARAM_OUT), array($var3, SQLSRV_PARAM_INOUT) );
明確地指定輸入參數、輸出參數及雙向參數:
array( array($var1, SQLSRV_PARAM_IN), array($var2, SQLSRV_PARAM_OUT), array($var3, SQLSRV_PARAM_INOUT) );
使用 sqlsrv_query 執行查詢,或使用 sqlsrv_prepare 和 sqlsrv_execute 來執行。 例如,下列程式碼會使用連接 $conn ,執行在 $params 中指定了參數值的查詢 $tsql:
sqlsrv_query($conn, $tsql, $params);