Funzionamento del driver

La tabella seguente riepiloga le funzioni e gli attributi delle istruzioni che un driver ODBC 3.x deve implementare per i cursori a blocchi e scorrevoli.

Funzione o

attributo di istruzione
Commenti
SQL_ATTR_ROW_STATUS_PTR Imposta l'indirizzo della matrice di stato della riga riempita da SQLFetch e SQLFetchScroll. Questa matrice viene riempita anche da SQLSetPos se SQLSetPos viene chiamato nello stato dell'istruzione S6. Se SQLSetPos viene chiamato nello stato S7, questa matrice non viene riempita ma la matrice a cui punta l'argomento RowStatusArray di SQLExtendedFetch viene riempita. Per altre informazioni, vedere Transizioni di istruzioni nell'Appendice B: Tabelle di transizione dello stato ODBC.
SQL_ATTR_ROWS_FETCHED_PTR Imposta l'indirizzo del buffer in cui SQLFetch e SQLFetchScroll restituiscono il numero di righe recuperate. Se viene chiamato SQLExtendedFetch , questo buffer non viene riempito ma l'argomento RowCountPtr punta al numero di righe recuperate.
SQL_ATTR_ROW_ARRAY_SIZE Imposta le dimensioni del set di righe usate da SQLFetch e SQLFetchScroll.
SQL_ROWSET_SIZE Imposta le dimensioni del set di righe utilizzate da SQLExtendedFetch. I driver ODBC 3.x implementano questa opzione se vogliono lavorare con applicazioni ODBC 2.x che chiamano SQLExtendedFetch o SQLSetPos.
Sqlbulkoperations Se un driver ODBC 3.x deve funzionare con applicazioni ODBC 2.x che usano SQLSetPos con un'operazione di SQL_ADD, il driver deve supportare SQLSetPos con un'operazionedi SQL_ADD oltre a SQLBulkOperations con un'operazione di SQL_ADD.
Sqlextendedfetch Restituisce il set di righe specificato. I driver ODBC 3.x implementano questa opzione se vogliono lavorare con applicazioni ODBC 2.x che chiamano SQLExtendedFetch o SQLSetPos. Di seguito sono riportati i dettagli di implementazione:

- Il driver recupera le dimensioni del set di righe dal valore dell'attributo di istruzione SQL_ROWSET_SIZE.
- Il driver recupera l'indirizzo della matrice di stato della riga dall'argomento RowStatusArray , non dall'attributo dell'istruzione SQL_ATTR_ROW_STATUS_PTR. L'argomento RowStatusArray in una chiamata a SQLExtendedFetch non deve essere un puntatore Null. (Si noti che in ODBC 3.x, l'attributo dell'istruzione SQL_ATTR_ROW_STATUS_PTR può essere un puntatore Null.
- Il driver recupera l'indirizzo delle righe recuperate buffer dall'argomento RowCountPtr , non dall'attributo dell'istruzione SQL_ATTR_ROWS_FETCHED_PTR.
- Il driver restituisce SQLSTATE 01S01 (errore di riga) per indicare che si è verificato un errore durante il recupero delle righe da una chiamata a SQLExtendedFetch. Un driver ODBC 3.x deve restituire SQLSTATE 01S01 (errore in riga) solo quando viene chiamato SQLExtendedFetch, non quando viene chiamato SQLFetch o SQLFetchScroll. Per mantenere la compatibilità con le versioni precedenti, quando SQLSTATE 01S01 (errore nella riga) viene restituito da SQLExtendedFetch, Gestione driver non ordina i record di stato nella coda degli errori in base alle regole indicate nella sezione "Sequenza di record di stato" di SQLGetDiagField.
SQLFetch Restituisce il set di righe successivo. Di seguito sono riportati i dettagli di implementazione:

- Il driver recupera le dimensioni del set di righe dal valore dell'attributo dell'istruzione SQL_ATTR_ROW_ARRAY_SIZE.
- Il driver recupera l'indirizzo della matrice di stato della riga dall'attributo dell'istruzione SQL_ATTR_ROW_STATUS_PTR.
- Il driver recupera l'indirizzo delle righe recuperate dal buffer dell'istruzione SQL_ATTR_ROWS_FETCHED_PTR.
- L'applicazione può combinare chiamate tra SQLFetchScroll e SQLFetch.
- SQLFetch restituisce segnalibri se la colonna 0 è associata.
- È possibile chiamare SQLFetch per restituire più righe.
- Il driver non restituisce SQLSTATE 01S01 (errore di riga) per indicare che si è verificato un errore durante il recupero delle righe da una chiamata a SQLFetch.
SQLFetchScroll Restituisce il set di righe specificato. Di seguito sono riportati i dettagli di implementazione:

- Il driver recupera le dimensioni del set di righe dall'attributo dell'istruzione SQL_ATTR_ROW_ARRAY_SIZE.
- Il driver recupera l'indirizzo della matrice di stato della riga dall'attributo dell'istruzione SQL_ATTR_ROW_STATUS_PTR.
- Il driver recupera l'indirizzo delle righe recuperate dal buffer dell'istruzione SQL_ATTR_ROWS_FETCHED_PTR.
- L'applicazione può combinare chiamate tra SQLFetchScroll e SQLFetch.
- Il driver non restituisce SQLSTATE 01S01 (errore di riga) per indicare che si è verificato un errore mentre le righe sono state recuperate da una chiamata a SQLFetchScroll.
Sqlsetpos Esegue varie operazioni posizionate. Di seguito sono riportati i dettagli di implementazione:

- Può essere chiamato negli stati di istruzione S6 o S7. Per altre informazioni, vedere Transizioni di istruzioni nell'Appendice B: Tabelle di transizione dello stato ODBC.
- Se viene chiamato nello stato dell'istruzione S5 o S6, il driver recupera le dimensioni del set di righe dall'attributo dell'istruzione SQL_ATTR_ROWS_FETCHED_PTR e dall'indirizzo della matrice di stato della riga dall'attributo dell'istruzione SQL_ATTR_ROW_STATUS_PTR.
- Se viene chiamato nello stato dell'istruzione S7, il driver recupera le dimensioni del set di righe dall'attributo dell'istruzione SQL_ROWSET_SIZE e dall'indirizzo della matrice di stato della riga dall'argomento RowStatusArray di SQLExtendedFetch.
- Il driver restituisce SQLSTATE 01S01 (errore di riga) solo per indicare che si è verificato un errore mentre le righe sono state recuperate da una chiamata a SQLSetPos per eseguire un'operazione bulk quando la funzione viene chiamata nello stato S7. Per mantenere la compatibilità con le versioni precedenti, se SQLSTATE 01S01 (errore nella riga) viene restituito da SQLSetPos, Gestione driver non ordina i record di stato nella coda degli errori in base alle regole indicate nella sezione "Sequenza di record di stato" di SQLGetDiagField.
- Se il driver deve funzionare con applicazioni ODBC 2.x che chiamano SQLSetPos con un argomento Operation di SQL_ADD, il driver deve supportare SQLSetPos con un argomento Operation di SQL_ADD.