Condividi tramite


Cursori statici ODBC

Un cursore statico è uno in cui il set di risultati sembra essere statico. In genere, non rileva le modifiche apportate all'adesione, all'ordine o ai valori del set di risultati dopo l'apertura del cursore. Si supponga, per esempio, che un cursore statico recuperi una riga e che, in seguito, un'altra applicazione aggiorni tale riga. Se il cursore statico recupera nuovamente la riga, i valori che rileva rimangono invariati, nonostante le modifiche apportate dall'altra applicazione.

I cursori statici possono rilevare le proprie operazioni di aggiornamento, eliminazione e inserimento, sebbene non rientri tra i loro requisiti. Quando un determinato cursore statico rileva queste modifiche, le segnala tramite l'opzione SQL_STATIC_SENSITIVITY in SQLGetInfo. I cursori statici non rilevano mai altri aggiornamenti, eliminazioni e inserimenti.

La matrice di stato della riga specificata dall'attributo dell'istruzione SQL_ATTR_ROW_STATUS_PTR può contenere SQL_ROW_SUCCESS, SQL_ROW_SUCCESS_WITH_INFO o SQL_ROW_ERROR per qualsiasi riga. Restituisce SQL_ROW_UPDATED, SQL_ROW_DELETED o SQL_ROW_ADDED per le righe aggiornate, eliminate o inserite dal cursore, presupponendo che il cursore possa rilevare tali modifiche.

In genere, i cursori statici vengono implementati bloccando le righe nel set di risultati o eseguendo una copia, o uno snapshot, del set di risultati. Anche se bloccare le righe è relativamente semplice, ha lo svantaggio di ridurre significativamente la concorrenza. La creazione di una copia consente una maggiore concorrenza e permette al cursore di tenere traccia delle proprie operazioni di aggiornamento, eliminazione e inserimento, modificandone la copia. Tuttavia, una copia è più costosa da creare e può divergere dai dati sottostanti in quanto tali dati vengono modificati da altri utenti.