Associazione di parametri
Ogni marcatore di parametro in un'istruzione SQL deve essere associato a una variabile nell'applicazione prima di eseguire l'istruzione. A tale scopo, è necessario chiamare la funzione SQLBindParameter. SQLBindParameter descrive la variabile di programma (indirizzo, tipo di dati C e così via) al driver. La funzione identifica inoltre il marcatore di parametro specificandone il valore ordinale e quindi descrive le caratteristiche dell'oggetto SQL rappresentato (tipo di dati SQL, precisione e così via).
I marcatori di parametro possono essere associati o riassociati in qualunque momento prima di eseguire un'istruzione. Un'associazione di parametri rimane effettiva fino a quando non si verifica uno dei casi seguenti:
Una chiamata a SQLFreeStmt con il parametro Option impostato su SQL_RESET_PARAMS rilascia tutti i parametri associati all'handle di istruzione.
Una chiamata a SQLBindParameter con ParameterNumber impostato sul valore ordinale di un marcatore di parametro associato rilascia automaticamente l'associazione precedente.
Un'applicazione può inoltre associare parametri a matrici di variabili di programma per elaborare un'istruzione SQL in batch. Sono disponibili due tipi diversi di associazione di matrici:
L'associazione per colonna viene eseguita quando ogni singolo parametro viene associato alla relativa matrice di variabili.
L'associazione per colonna viene specificata chiamando SQLSetStmtAttr con Attribute impostato su SQL_ATTR_PARAM_BIND_TYPE e ValuePtr impostato su SQL_PARAM_BIND_BY_COLUMN.
L'associazione per riga viene eseguita quando tutti i parametri nell'istruzione SQL vengono associati come unità a una matrice di strutture contenente le singole variabili per i parametri.
L'associazione per riga viene specificata chiamando SQLSetStmtAttr con Attribute impostato su SQL_ATTR_PARAM_BIND_TYPE e ValuePtr impostato sulle dimensioni della struttura che contiene le variabili di programma.
Quando il driver ODBC di SQL Server Native Client invia parametri di stringa binaria o di caratteri, aggiunge i valori alla lunghezza specificata nel parametro ColumnSize di SQLBindParameter. Se un'applicazione ODBC 2.x specifica 0 per ColumnSize, il driver aggiunge il valore di parametro alla precisione del tipo di dati. La precisione è 8000 in caso di connessione a server SQL Server, 255 in caso di connessione a versioni precedenti di SQL Server. ColumnSize è espresso in byte per le colonne variant.
SQL Server supporta la definizione di nomi per parametri delle stored procedure. Anche in ODBC 3.5 è stato introdotto il supporto per parametri denominati utilizzati per chiamare stored procedure SQL Server. Questo supporto può essere utilizzato per effettuare le operazioni seguenti:
Chiamare una stored procedure e fornire valori per un subset dei parametri definiti per la stored procedure.
Specificare i parametri in un ordine diverso nell'applicazione rispetto all'ordine specificato alla creazione della stored procedure.
I parametri denominati sono supportati solo quando si utilizza l'istruzione Transact-SQL EXECUTE o la sequenza di escape ODBC CALL per eseguire una stored procedure.
Se è impostato SQL_DESC_NAME per una stored procedure, anche tutti i parametri della stored procedure nella query devono impostare SQL_DESC_NAME. Se vengono utilizzati valori letterali nelle chiamate a stored procedure, quando per i parametri è impostato SQL_DESC_NAME, questi dovrebbero utilizzare il formato 'name=value', dove name è il nome del parametro della stored procedure (ad esempio, @p1). Per ulteriori informazioni, vedere Binding Parameters by Name (Named Parameters).