Condividi tramite


SQLSetPos (libreria di cursori)

Importante

Questa funzionalità verrà rimossa nelle versioni future di Windows. Evitare di usare questa funzionalità nel nuovo lavoro di sviluppo e pianificare la modifica delle applicazioni che attualmente usano questa funzionalità. Microsoft consiglia di usare la funzionalità cursore del driver.

In questo argomento viene illustrato l'uso della funzione SQLSetPos nella libreria di cursori. Per informazioni generali su SQLSetPos, vedere Funzione SQLSetPos.

La libreria di cursori supporta l'operazione di SQL_POSITION solo per l'argomento Operation in SQLSetPos. Supporta il valore SQL_LOCK_NO_CHANGE solo per l'argomento LockType .

Se il driver non supporta le operazioni bulk, la libreria di cursori restituisce SQLSTATE HYC00 (driver non in grado di supportare) quando SQLSetPos viene chiamato con RowNumber uguale a 0. Questo comportamento del driver non è consigliato.

La libreria di cursori non supporta le operazioni di SQL_UPDATE e SQL_DELETE in una chiamata a SQLSetPos. La libreria di cursori implementa un'istruzione SQL di aggiornamento o eliminazione posizionata creando un'istruzione di aggiornamento o eliminazione ricercata con una clausola WHERE che enumera i valori archiviati nella cache per ogni colonna associata. Per altre informazioni, vedere Elaborazione di istruzioni di aggiornamento ed eliminazione posizionate.

Se il driver non supporta cursori statici, un'applicazione che utilizza la libreria di cursori deve chiamare SQLSetPos solo in un set di righe recuperato da SQLExtendedFetch o SQLFetchScroll, non da SQLFetch. La libreria di cursori implementa SQLExtendedFetch e SQLFetchScroll effettuando chiamate ripetute di SQLFetch (con dimensioni del set di righe pari a 1) nel driver. La libreria di cursori passa le chiamate a SQLFetch, d'altra parte, al driver. Se SQLSetPos viene chiamato su un set di righe multirow recuperato da SQLFetch quando il driver non supporta i cursori statici, la chiamata avrà esito negativo perché SQLSetPos non funziona con cursori forward-only. Ciò si verifica anche se un'applicazione ha chiamato correttamente SQLSetStmtAttr per impostare SQL_ATTR_CURSOR_TYPE su SQL_CURSOR_STATIC, che la libreria di cursori supporta anche se il driver non supporta cursori statici.