Compartilhar via


SQLSetPos (Biblioteca de cursores)

Importante

Esse recurso será removido em uma versão futura do Windows. Evite usar esse recurso em um novo trabalho de desenvolvimento e planeje modificar aplicativos que atualmente usam esse recurso. A Microsoft recomenda usar a funcionalidade de cursor do driver.

Este tópico discute o uso da função SQLSetPos na biblioteca de cursores. Para obter informações gerais sobre SQLSetPos, consulte Função SQLSetPos.

A biblioteca de cursores dá suporte à operação de SQL_POSITION somente para o argumento Operation em SQLSetPos. Ele dá suporte ao valor SQL_LOCK_NO_CHANGE somente para o argumento LockType .

Se o driver não der suporte a operações em massa, a biblioteca de cursores retornará SQLSTATE HYC00 (Driver não compatível) quando SQLSetPos for chamado com RowNumber igual a 0. Esse comportamento de driver não é recomendado.

A biblioteca de cursores não dá suporte às operações de SQL_UPDATE e SQL_DELETE em uma chamada para SQLSetPos. A biblioteca de cursores implementa uma instrução SQL de atualização ou exclusão posicionada criando uma instrução de atualização ou exclusão pesquisada com uma cláusula WHERE que enumera os valores armazenados em seu cache para cada coluna associada. Para obter mais informações, consulte Processing Positioned Update and Delete Statements(Processing Positioned Update and Delete Statements).

Se o driver não der suporte a cursores estáticos, um aplicativo que trabalha com a biblioteca de cursores deverá chamar SQLSetPos apenas em um conjunto de linhas buscado por SQLExtendedFetch ou SQLFetchScroll, não por SQLFetch. A biblioteca de cursores implementa SQLExtendedFetch e SQLFetchScroll fazendo chamadas repetidas de SQLFetch (com um tamanho de conjunto de linhas de 1) no driver. A biblioteca de cursores passa chamadas para SQLFetch, por outro lado, para o driver. Se SQLSetPos for chamado em um conjunto de linhas de várias linhas buscado pelo SQLFetch quando o driver não oferecer suporte a cursores estáticos, a chamada falhará porque SQLSetPos não funciona com cursores somente de encaminhamento. Isso ocorrerá mesmo se um aplicativo tiver chamado SQLSetStmtAttr com êxito para definir SQL_ATTR_CURSOR_TYPE como SQL_CURSOR_STATIC, que a biblioteca de cursores dá suporte mesmo que o driver não dê suporte a cursores estáticos.