Condividi tramite


Uso dei parametri dell'istruzione - Associazione di parametri

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW)

Ogni marcatore di parametro in un'istruzione SQL deve essere associato o associato a una variabile nell'applicazione prima che l'istruzione possa essere eseguita. A tale scopo, 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 libera tutti i parametri associati all'handle di istruzione.

  • Una chiamata a SQLBindParameter con ParameterNumber impostato sull'ordinale di un marcatore di parametro associato rilascia automaticamente l'associazione precedente.

Un'applicazione può anche 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 a livello di 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 carattere al server, i valori vengono inseriti nella lunghezza specificata nel parametro SQLBindParameter ColumnSize . Se un'applicazione ODBC 2.x specifica 0 per ColumnSize, il driver aggiunge il valore del parametro alla precisione del tipo di dati. La precisione è 8000 quando si è connessi ai server SQL Server, 255 quando si è connessi alle versioni precedenti di SQL Server. ColumnSize è in byte per le colonne varianti.

SQL Server supporta la definizione dei nomi per i parametri della stored procedure. ODBC 3.5 ha introdotto anche il supporto per i parametri denominati usati durante la chiamata alle stored procedure di 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 usa l'istruzione EXECUTE Transact-SQL o la sequenza di escape ODBC CALL per eseguire una stored procedure.

Se SQL_DESC_NAME è impostato per un parametro di stored procedure, tutti i parametri della stored procedure nella query devono essere impostati anche SQL_DESC_NAME. Se i valori letterali vengono usati nelle chiamate di stored procedure, in cui i parametri hanno SQL_DESC_NAME impostato, i valori letterali devono usare il formato 'name=value', dove name è il nome del parametro della stored procedure , ad esempio . @p1) Per altre informazioni, vedere Binding Parameters by Name (Named Parameters).

Vedi anche

Uso dei parametri di un'istruzione