Comportamentos de cursor
O ODBC dá suporte às opções ISO para especificar o comportamento de cursores por meio da definição de sua rolagem e sensibilidade. Esses comportamentos são especificados definindo as opções SQL_ATTR_CURSOR_SCROLLABLE e SQL_ATTR_CURSOR_SENSITIVITY em uma chamada de SQLSetStmtAttr. O driver ODBC do SQL Server Native Client implementa essas opções solicitando cursores de servidor com as características a seguir.
Configurações do comportamento de cursor |
Características de cursor do servidor solicitadas |
---|---|
SQL_SCROLLABLE e SQL_SENSITIVE |
Cursor controlado por conjunto de chaves e simultaneidade otimista baseada em versão |
SQL_SCROLLABLE e SQL_INSENSITIVE |
Cursor estático e simultaneidade somente leitura |
SQL_SCROLLABLE e SQL_UNSPECIFIED |
Cursor estático e simultaneidade somente leitura |
SQL_NONSCROLLABLE e SQL_SENSITIVE |
Cursor de somente avanço e simultaneidade otimista baseada em versão |
SQL_NONSCROLLABLE e SQL_INSENSITIVE |
Conjunto de resultados padrão (somente avanço, somente leitura) |
SQL_NONSCROLLABLE e SQL_UNSPECIFIED |
Conjunto de resultados padrão (somente avanço, somente leitura) |
A simultaneidade otimista baseada em versão exige uma coluna timestamp na tabela subjacente. Se o controle de simultaneidade otimista baseada em versão for solicitado em uma tabela que não tem uma coluna timestamp, o servidor usará a simultaneidade otimista baseada em valores.
Rolagem
Quando SQL_ATTR_CURSOR_SCROLLABLE é definido como SQL_SCROLLABLE, o cursor dá suporte a todos os valores diferentes do parâmetro FetchOrientation de SQLFetchScroll. Quando SQL_ATTR_CURSOR_SCROLLABLE é definido como SQL_NONSCROLLABLE, o cursor dá suporte apenas a um valor de FetchOrientation SQL_FETCH_NEXT.
Sensibilidade
Quando SQL_ATTR_CURSOR_SENSITIVITY é definido como SQL_SENSITIVE, o cursor reflete as modificações de dados feitas pelo usuário atual ou confirmadas por outros usuários. Quando SQL_ATTR_CURSOR_SENSITIVITY é definido como SQL_INSENSITIVE, o cursor não reflete as modificações de dados.