Compartilhar via


Atualizar dados com SQLSetPos

Os aplicativos podem atualizar ou excluir qualquer linha no conjunto de linhas com SQLSetPos. Chamar SQLSetPos é uma alternativa conveniente a construir e executar uma instrução SQL. Isso permite que um driver ODBC dê suporte a atualizações posicionadas mesmo quando a fonte de dados não dá suporte a instruções SQL posicionadas. Isso faz parte do paradigma de alcançar acesso total ao banco de dados por meio de chamadas de função.

SQLSetPos opera no conjunto de linhas atual e só pode ser usado após uma chamada para SQLFetchScroll. O aplicativo especifica o número da linha a ser atualizada, excluída ou inserida, e o driver recupera os novos dados de tal linha dos buffers do conjunto de linhas. O SQLSetPos também pode ser usado para designar uma linha especificada como a linha atual ou para atualizar uma linha específica no conjunto de linhas da fonte de dados.

O tamanho do conjunto de linhas é definido por uma chamada para SQLSetStmtAttr com um argumento Attribute de SQL_ATTR_ROW_ARRAY_SIZE. O SQLSetPos usa um novo tamanho de conjunto de linhas, porém, apenas depois de uma chamada para SQLFetch ou SQLFetchScroll. Por exemplo, se o tamanho do conjunto de linhas for alterado, SQLSetPos será chamado e então SQLFetch ou SQLFetchScroll será chamado, e a chamada para SQLSetPos usará o tamanho antigo do conjunto de linhas, enquanto SQLFetch ou SQLFetchScroll usará o novo tamanho do conjunto de linhas.

A primeira linha do conjunto de linhas é o número de linha 1. O argumento RowNumber no SQLSetPos deve identificar uma linha no conjunto de linhas, ou seja, seu valor deve estar no intervalo entre 1 e o número de linhas que foram buscadas mais recentemente (que pode ser menor que o tamanho do conjunto de linhas). Se RowNumber for 0, a operação será aplicada a toda linha no conjunto de linhas.

Como a maior parte da interação com bancos de dados relacionais é feita por meio de SQL, não há amplo suporte para SQLSetPos. Porém, um driver pode emulá-lo com facilidade construindo e executando uma instrução UPDATE ou DELETE.

Para determinar as operações que são compatíveis com SQLSetPos, um aplicativo chama SQLGetInfo com a opção de informações de SQL_DYNAMIC_CURSOR_ATTRIBUTES1, SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1, SQL_KEYSET_CURSOR_ATTRIBUTES1 ou SQL_STATIC_CURSOR_ATTRIBUTES1 (dependendo do tipo do cursor).

Esta seção contém os tópicos a seguir.