繫結參數標記

應用程式會藉由呼叫 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 版本,對應 SQLSetParamSQLBindParameter 之間的呼叫。