Udostępnij przez


Znaczniki parametrów powiązania

Aplikacja wiąże parametry przez wywołanie metody SQLBindParameter. SQLBindParameter wiąże jeden parametr naraz. Wraz z nim aplikacja określa następujące elementy:

  • Numer parametru. Parametry są numerowane w porządku rosnącym w instrukcji SQL, zaczynając od liczby 1. Chociaż jest to legalne określenie numeru parametru, który jest wyższy niż liczba parametrów w instrukcji SQL, wartość parametru zostanie zignorowana po wykonaniu instrukcji.

  • Typ parametru (dane wejściowe, wejściowe/wyjściowe lub wyjściowe). Z wyjątkiem parametrów w wywołaniach procedur wszystkie parametry są parametrami wejściowymi. Aby uzyskać więcej informacji, zobacz Parametry procedury w dalszej części tej sekcji.

  • Typ danych języka C, adres i długość bajtu zmiennej powiązanej z parametrem. Sterownik musi mieć możliwość przekonwertowania danych z typu danych C na typ danych SQL lub zwracany jest błąd. Aby uzyskać listę obsługiwanych konwersji, zobacz Konwertowanie danych z języka C na typy danych SQL w dodatku D: Typy danych.

  • Typ danych SQL, precyzja i skala samego parametru.

  • Adres bufora długości/wskaźnika długości. Zapewnia długość bajtów danych binarnych lub znaków, określa, że dane mają wartość NULL lub określają, że dane zostaną wysłane za pomocą funkcji SQLPutData. Aby uzyskać więcej informacji, zobacz Używanie wartości długości/wskaźnika.

Na przykład poniższy kod wiąże kolumny SalesPerson i CustID z parametrami kolumn SalesPerson i CustID . Ponieważ salesPerson zawiera dane znaków, które są zmienną długością, kod określa długość bajtu salesPerson (11) i wiąże salesPersonLenOrInd z długością bajtów danych w salesPerson. Te informacje nie są niezbędne dla identyfikatora CustID , ponieważ zawierają dane całkowite, które mają stałą długość.

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

Po wywołaniu parametru SQLBindParameter sterownik przechowuje te informacje w strukturze instrukcji . Po wykonaniu instrukcji używa informacji do pobierania danych parametrów i wysyłania ich do źródła danych.

Uwaga / Notatka

W wersji ODBC 1.0 parametry były powiązane z parametrami SQLSetParam. Menedżer sterowników mapuje wywołania między sqlSetParam i SQLBindParameter, w zależności od wersji ODBC używanych przez aplikację i sterownik.