繫結參數標記
應用程式會藉由呼叫 SQLBindParameter 來繫結參數。 SQLBindParameter 會一次繫結一個參數。 透過此函式,應用程式會指定以下內容:
參數編號。 參數會以 SQL 陳述式中的遞增參數順序編號,從數字 1 開始。 雖然指定高於 SQL 陳述式中參數數目的參數編號是合法的,但是執行陳述式時,將會忽略參數值。
參數類型 (輸入、輸入/輸出或輸出)。 除了程序呼叫中的參數之外,所有參數都是輸入參數。 如需詳細資訊,請參閱本節稍後討論的程序參數。
繫結至參數的 C 資料類型、位址與變數位元組長度。 驅動程式必須能夠將資料從 C 資料類型轉換成 SQL 資料類型,或傳回錯誤。 如需支援的轉換清單,請參閱附錄 D:資料類型中的將資料從 C 轉換成 SQL 資料類型。
參數本身的 SQL 資料類型、有效位數和小數位數。
長度/指標緩衝區的位址。 這會提供二進位或字元資料的位元組長度、指定資料為 Null,或指定資料會以 SQLPutData 傳送。 如需詳細資訊,請參閱使用長度/指標值。
例如,下列程式碼會將 SalesPerson 和 CustID 繫結至 SalesPerson 和 CustID 資料行的參數。 由於 SalesPerson 包含可變長度的字元資料,因此程式碼會指定 SalesPerson (11) 的位元組長度,並繫結 SalesPersonLenOrInd 以包含 SalesPerson 中資料的位元組長度。 CustID 不需要此資訊,因為其中包含固定長度的整數資料。
SQLCHAR SalesPerson[11];
SQLINTEGER SalesPersonLenOrInd, CustIDInd;
SQLUINTEGER CustID;
// Bind SalesPerson to the parameter for the SalesPerson column and
// CustID to the parameter for the CustID column.
SQLBindParameter(hstmt1, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 10, 0,
SalesPerson, sizeof(SalesPerson), &SalesPersonLenOrInd);
SQLBindParameter(hstmt1, 2, SQL_PARAM_INPUT, SQL_C_ULONG, SQL_INTEGER, 10, 0,
&CustID, 0, &CustIDInd);
// Set values of salesperson and customer ID and length/indicators.
strcpy_s((char*)SalesPerson, _countof(SalesPerson), "Garcia");
SalesPersonLenOrInd = SQL_NTS;
CustID = 1331;
CustIDInd = 0;
// Execute a statement to get data for all orders made to the specified
// customer by the specified salesperson.
SQLExecDirect(hstmt1,"SELECT * FROM Orders WHERE SalesPerson=? AND CustID=?",SQL_NTS);
呼叫 SQLBindParameter 時,驅動程式會將此資訊儲存在陳述式的結構中。 當陳述式執行時,會使用該資訊來擷取參數資料,並將其傳送至資料來源。
注意
在 ODBC 1.0 中,參數已利用 SQLSetParam 加以繫結。 驅動程式管理員會根據應用程式和驅動程式所使用的 ODBC 版本,對應 SQLSetParam 和 SQLBindParameter 之間的呼叫。