Sdílet prostřednictvím


Identifikátory vazby parametrů

Aplikace sváže parametry voláním SQLBindParameter. SQLBindParameter vytvoří vazbu jednoho parametru najednou. V tomto případě aplikace určuje následující:

  • Číslo parametru. Parametry se v příkazu SQL číslují v rostoucím pořadí parametrů počínaje číslem 1. I když je legální zadat číslo parametru, které je vyšší než počet parametrů v příkazu SQL, hodnota parametru bude ignorována při spuštění příkazu.

  • Typ parametru (vstup, vstup/výstup nebo výstup). Kromě parametrů ve volání procedur jsou všechny parametry vstupními parametry. Další informace naleznete v části Parametry procedury dále v této části.

  • Datový typ v jazyce C, adresa a bajtová délka proměnné vázané na parametr. Ovladač musí být schopen převést data z datového typu C na datový typ SQL nebo se vrátí chyba. Seznam podporovaných převodů naleznete v tématu Převod dat z jazyka C na datové typy SQL v dodatku D: Datové typy.

  • Datový typ SQL, přesnost a měřítko samotného parametru.

  • Adresa vyrovnávací paměti délky/indikátoru. Poskytuje délku bajtu binárních nebo znakových dat, určuje, že data mají hodnotu NULL, nebo určuje, že se data budou odesílat pomocí SQLPutData. Další informace naleznete v tématu Použití hodnot délky a ukazatele.

Například následující kód vytvoří vazbu SalesPerson a CustID na parametry pro sloupce SalesPerson a CustID. Vzhledem k tomu, že SalesPerson obsahuje znaková data, která mají proměnnou délku, určuje kód délku bajtu SalesPerson (11) a vytvoří vazbu SalesPersonLenOrInd tak, aby obsahoval délku bajtu dat v SalesPerson. Tyto informace nejsou pro CustID nezbytné, protože obsahují celočíselná data, která mají pevnou délku.

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

Při volání SQLBindParameter ovladač ukládá tyto informace do struktury pro příkaz. Při spuštění příkazu použije informace k načtení dat parametrů a jejich odeslání do zdroje dat.

Poznámka:

V rozhraní ODBC 1.0 byly parametry vázané na SQLSetParam. Správce ovladačů mapuje volání mezi SQLSetParam a SQLBindParameter v závislosti na verzích ODBC používaných aplikací a ovladačem.