Associazione di parametri

Ogni indicatore 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 l'indicatore di parametro specificandone il valore ordinale e quindi descrive le caratteristiche dell'oggetto SQL rappresentato (tipo di dati SQL, precisione e così via).

Gli indicatori 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 indicatore 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-SQLEXECUTE o la sequenza di escape ODBC CALL per eseguire una stored procedure.

Se per un parametro della stored procedure è impostato SQL_DESC_NAME, sarà necessario impostare SQL_DESC_NAME anche per tutti gli altri parametri della stored procedure nella query.  Se vengono utilizzati valori letterali nelle chiamate a stored procedure, quando per i parametri è impostato SQL_DESC_NAME, sarà necessario utilizzare il formato 'name=value' per i valori letterali, dove name rappresenta il nome del parametro della stored procedure (ad esempio, @p1). Per ulteriori informazioni, vedere Binding Parameters by Name (Named Parameters).