Associazione di colonne di set di risultati

Le applicazioni possono associare il numero, alto o basso, di colonne del set di risultati che desiderano, o persino non associarne nessuna. Quando viene recuperata una riga di dati, il driver restituisce i dati delle colonne associate all'applicazione. L'associazione di tutte le colonne del set di risultati dipende dall'applicazione. Ad esempio, le applicazioni che generano report hanno in genere un formato fisso; tali applicazioni creano un set di risultati contenente tutte le colonne usate nel report e quindi associano e recuperano i dati di tutte queste colonne. Le applicazioni che mostrano schermate piene di dati a volte consentono all'utente di decidere quali colonne visualizzare; tali applicazioni creano un set di risultati contenente tutte le colonne desiderate dall'utente, ma associano e recuperano solo i dati delle colonne scelte dall'utente.

I dati possono essere recuperati da colonne non associate chiamando SQLGetData. Questa chiamata viene in genere effettuata per recuperare dati lunghi, che spesso superano la lunghezza di un singolo buffer e devono essere recuperati in parti.

Le colonne possono essere associate in qualsiasi momento, anche dopo che sono state recuperate le righe. Tuttavia, le nuove associazioni non hanno effetto fino a quando non viene recuperata la riga successiva; non vengono applicate ai dati delle righe già recuperate.

Una variabile rimane associata a una colonna fino a quando non vi viene associata una variabile diversa, fino a quando non viene dissociata la colonna chiamando SQLBindCol con un puntatore Null come indirizzo della variabile, fino a quando tutte le colonne non vengono dissociate chiamando SQLFreeStmt con l'opzione SQL_UNBIND o fino al rilascio dell'istruzione. Per questo motivo, l'applicazione deve essere sicura che tutte le variabili associate rimangano valide purché siano associate. Per altre informazioni, vedere Allocazione e liberazione di buffer.

Poiché le associazioni di colonna sono solo informazioni associate alla struttura dell'istruzione, possono essere impostate in qualsiasi ordine. Sono anche indipendenti dal set di risultati. Si supponga, ad esempio, che un'applicazione associ le colonne del set di risultati generato dall'istruzione SQL seguente:

SELECT * FROM Orders  

Se l'applicazione esegue quindi l'istruzione SQL

SELECT * FROM Lines  

nello stesso handle di istruzione, le associazioni di colonna per il primo set di risultati sono ancora attive perché si tratta delle associazioni archiviate nella struttura dell'istruzione. Nella maggior parte dei casi, si tratta di una pratica di programmazione scorretta e dovrebbe essere evitata. L'applicazione deve invece chiamare SQLFreeStmt con l'opzione SQL_UNBIND per annullare l'associazione di tutte le colonne precedenti e quindi associarne di nuove.