Comportamenti dei cursori
Si applica a: SQL Server database SQL di Azure Istanza gestita di SQL di Azure azure Synapse Analytics Analytics Platform System (PDW)
ODBC supporta le opzioni ISO per la specifica del comportamento dei cursori mediante lo scorrimento e la sensibilità. Questi comportamenti vengono specificati impostando le opzioni SQL_ATTR_CURSOR_SCROLLABLE e SQL_ATTR_CURSOR_SENSITIVITY in una chiamata a SQLSetStmtAttr. Il driver ODBC di SQL Server Native Client implementa queste opzioni richiedendo cursori del server con le caratteristiche seguenti.
Impostazioni del comportamento del cursore | Caratteristiche del cursore server richieste |
---|---|
SQL_SCROLLABLE e SQL_SENSITIVE | Cursore gestito da keyset e concorrenza ottimistica basata sulla versione |
SQL_SCROLLABLE e SQL_INSENSITIVE | Cursore statico e concorrenza di sola lettura |
SQL_SCROLLABLE e SQL_UNSPECIFIED | Cursore statico e concorrenza di sola lettura |
SQL_NONSCROLLABLE e SQL_SENSITIVE | Cursore forward-only e concorrenza ottimistica basata sulla versione |
SQL_NONSCROLLABLE e SQL_INSENSITIVE | Set di risultati predefinito (forward only, di sola lettura) |
SQL_NONSCROLLABLE e SQL_UNSPECIFIED | Set di risultati predefinito (forward only, di sola lettura) |
La concorrenza ottimistica basata sulla versione richiede una colonna timestamp nella tabella sottostante. Se viene richiesto il controllo della concorrenza ottimistica basata sulla versione in una tabella che non dispone di una colonna timestamp , il server usa la concorrenza ottimistica basata su valori.
Scorrimento
Quando SQL_ATTR_CURSOR_SCROLLABLE è impostato su SQL_SCROLLABLE, il cursore supporta tutti i diversi valori per il parametro FetchOrientation di SQLFetchScroll. Quando SQL_ATTR_CURSOR_SCROLLABLE è impostato su SQL_NONSCROLLABLE, il cursore supporta solo un valore FetchOrientation di SQL_FETCH_NEXT.
Riservatezza
Quando SQL_ATTR_CURSOR_SENSITIVITY è impostato su SQL_SENSITIVE, il cursore riflette le modifiche dei dati apportate dall'utente corrente di cui è stato eseguito il commit da altri utenti. Quando SQL_ATTR_CURSOR_SENSITIVITY è impostato su SQL_INSENSITIVE, il cursore non riflette le modifiche dei dati.