Delen via


Markeringen voor bindingsparameters

De toepassing verbindt parameters door SQLBindParameter aan te roepen. SQLBindParameter verbindt één parameter tegelijk. Hiermee geeft de toepassing het volgende op:

  • Het parameternummer. Parameters worden genummerd in toenemende parametervolgorde in de SQL-instructie, te beginnen met het getal 1. Hoewel het wettelijk is om een parameternummer op te geven dat hoger is dan het aantal parameters in de SQL-instructie, wordt de parameterwaarde genegeerd wanneer de instructie wordt uitgevoerd.

  • Het parametertype (invoer, invoer/uitvoer of uitvoer). Met uitzondering van parameters in procedure-aanroepen zijn alle parameters invoerparameters. Zie Procedureparameters verderop in deze sectie voor meer informatie.

  • Het gegevenstype C, het adres en de bytelengte van de variabele die aan de parameter is gebonden. Het stuurprogramma moet de gegevens van het C-gegevenstype kunnen converteren naar het SQL-gegevenstype of er wordt een fout geretourneerd. Zie Gegevens converteren van C naar SQL-gegevenstypen in bijlage D: gegevenstypen voor een lijst met ondersteunde conversies.

  • Het SQL-gegevenstype, de precisie en de schaal van de parameter zelf.

  • Het adres van een lengte/indicatorbuffer. Het biedt de bytelengte van binaire of tekengegevens, geeft aan dat de gegevens NULL zijn of dat de gegevens worden verzonden met SQLPutData. Zie Lengte-/indicatorwaarden gebruiken voor meer informatie.

Met de volgende code worden bijvoorbeeld SalesPerson en CustID gebonden aan parameters voor de kolommen SalesPerson en CustID. Omdat SalesPerson tekengegevens bevat, die variabele lengte is, geeft de code de bytelengte van SalesPerson (11) aan en bindt SalesPersonLenOrInd de bytelengte van de gegevens in SalesPerson. Deze informatie is niet nodig voor CustID omdat deze gehele getallen bevat, wat een vaste lengte heeft.

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);  

Wanneer SQLBindParameter wordt aangeroepen, slaat het stuurprogramma deze informatie op in de structuur voor de instructie. Wanneer de instructie wordt uitgevoerd, wordt de informatie gebruikt om de parametergegevens op te halen en naar de gegevensbron te verzenden.

Opmerking

In ODBC 1.0 waren parameters gebonden aan SQLSetParam. Driver Manager brengt oproepen in kaart tussen SQLSetParam en SQLBindParameter, afhankelijk van de versies van ODBC die door de toepassing en het stuurprogramma worden gebruikt.