Assegnazione di archiviazione
In un'applicazione è possibile assegnare l'archiviazione per i risultati prima o dopo l'esecuzione di un'istruzione SQL. Se la preparazione o l'esecuzione dell'istruzione SQL avviene prima, è possibile richiedere informazioni sul set di risultati prima di archiviare i risultati. Se ad esempio il set di risultati non è noto, è necessario recuperare il numero di colonne prima dell'assegnazione dell'archiviazione.
Per associare l'archiviazione per una colonna di dati, viene chiamato SQLBindCol al quale viene passato quanto segue:
Tipo di dati nel quale devono essere convertiti i dati.
Indirizzo di un buffer di output per i dati.
L'applicazione deve allocare questo buffer, e deve essere di dimensioni sufficienti a contenere i dati nel formato nel quale vengono convertiti.
Lunghezza del buffer di output.
Questo valore viene ignorato se i dati restituiti hanno una larghezza fissa in C, ad esempio un numero intero, un numero reale o una struttura di data.
Indirizzo di un buffer di archiviazione nel quale restituire il numero di byte dei dati disponibili.
Un'applicazione può inoltre associare colonne del set di risultati a matrici di variabili di programma per consentire il supporto del recupero di righe in blocchi. Sono disponibili due tipi diversi di associazione di matrici:
L'associazione a livello di colonna è completa quando ogni colonna è associata alla rispettiva matrice di variabili.
L'associazione a livello di colonna viene specificata mediante la chiamata al metodo SQLSetStmtAttr con Attribute impostato su SQL_ATTR_ROW_BIND_TYPE e ValuePtr impostato su SQL_BIND_BY_COLUMN. Tutte le matrici devono avere lo stesso numero di elementi.
L'associazione a livello di riga è completa quando tutti i parametri dell'istruzione SQL vengono associati come un'unità a una matrice di strutture contenenti le singole variabili per i parametri.
L'associazione a livello di riga viene specificata mediante la chiamata al metodo SQLSetStmtAttr con Attribute impostato su SQL_ATTR_ROW_BIND_TYPE e ValuePtr impostato sulle dimensioni della struttura in cui si trovano le variabili che riceveranno le colonne del set di risultati.
Viene inoltre impostato SQL_ATTR_ROW_ARRAY_SIZE sul numero di elementi presenti nelle matrici di colonne o di righe e vengono impostati SQL_ATTR_ROW_STATUS_PTR e SQL_ATTR_ROWS_FETCHED_PTR.