Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Programmet binder parametrar genom att anropa SQLBindParameter. SQLBindParameter binder en parameter i taget. Med det anger programmet följande:
Parameternumret. Parametrar numreras i ökande parameterordning i SQL-instruktionen, med början med talet 1. Även om det är lagligt att ange ett parameternummer som är högre än antalet parametrar i SQL-instruktionen ignoreras parametervärdet när instruktionen körs.
Parametertypen (indata, indata/utdata eller utdata). Förutom parametrar i proceduranrop är alla parametrar indataparametrar. Mer information finns i Procedure Parameters (Procedurparametrar) senare i det här avsnittet.
C-datatypen, adressen och bytelängden för variabeln som är bunden till parametern. Drivrutinen måste kunna konvertera data från C-datatypen till SQL-datatypen eller så returneras ett fel. En lista över konverteringar som stöds finns i Konvertera data från C till SQL-datatyper i bilaga D: Datatyper.
SQL-datatypen, precisionen och skalan för själva parametern.
Adressen till en längd-/indikatorbuffert. Den tillhandahåller bytelängden för binära data eller teckendata, anger att data är NULL eller anger att data ska skickas med SQLPutData. Mer information finns i Använda längd/indikatorvärden.
Följande kod binder till exempel SalesPerson och CustID till parametrar för kolumnerna SalesPerson och CustID. Eftersom SalesPerson innehåller teckendata, som är variabellängd, anger koden bytelängden för SalesPerson (11) och binder SalesPersonLenOrInd till att innehålla bytelängden för data i SalesPerson. Den här informationen är inte nödvändig för CustID eftersom den innehåller heltalsdata, som är av fast längd.
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);
När SQLBindParameter anropas lagrar drivrutinen den här informationen i strukturen för -instruktionen. När -instruktionen körs använder den informationen för att hämta parameterdata och skicka dem till datakällan.
Anmärkning
I ODBC 1.0 var parametrar bundna med SQLSetParam. Driver Manager mappar anrop mellan SQLSetParam och SQLBindParameter, beroende på vilka versioner av ODBC som används av programmet och drivrutinen.