Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
L'applicazione associa i parametri chiamando SQLBindParameter. SQLBindParameter associa un parametro alla volta. Al suo interno, l'applicazione specifica quanto segue:
Numero di parametro. I parametri vengono numerati nell'ordine dei parametri crescente nell'istruzione SQL, a partire dal numero 1. Sebbene sia legale specificare un numero di parametro superiore al numero di parametri nell'istruzione SQL, il valore del parametro verrà ignorato quando viene eseguita l'istruzione.
Tipo di parametro (input, input/output o output). Ad eccezione dei parametri nelle chiamate di routine, tutti i parametri sono parametri di input. Per altre informazioni, vedere Parametri della procedura più avanti in questa sezione.
Il tipo di dati C, l'indirizzo e la lunghezza in byte della variabile associata al parametro. Il driver deve essere in grado di convertire i dati dal tipo di dati C al tipo di dati SQL o viene restituito un errore. Per un elenco delle conversioni supportate, vedere Conversione di dati da C a tipi di dati SQL nell'Appendice D: Tipi di dati.
Tipo di dati SQL, precisione e scala del parametro stesso.
Indirizzo di un buffer di lunghezza/indicatore. Fornisce la lunghezza in byte dei dati binari o di tipo carattere, specifica che i dati sono NULL o specifica che i dati verranno inviati con SQLPutData. Per altre informazioni, vedere Uso di valori di lunghezza/indicatore.
Ad esempio, il codice seguente associa SalesPerson e CustID ai parametri per le colonne SalesPerson e CustID. Poiché SalesPerson contiene dati di tipo carattere, ovvero lunghezza variabile, il codice specifica la lunghezza in byte di SalesPerson (11) e associa SalesPersonLenOrInd per contenere la lunghezza in byte dei dati in SalesPerson. Queste informazioni non sono necessarie per CustID perché contengono dati integer, ovvero di lunghezza fissa.
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);
Quando viene chiamato SQLBindParameter , il driver archivia queste informazioni nella struttura per l'istruzione . Quando l'istruzione viene eseguita, usa le informazioni per recuperare i dati dei parametri e inviarli all'origine dati.
Annotazioni
In ODBC 1.0 i parametri sono stati associati a SQLSetParam. Gestione driver esegue il mapping delle chiamate tra SQLSetParam e SQLBindParameter, a seconda delle versioni di ODBC usate dall'applicazione e dal driver.