Share via


O que o driver faz

A tabela a seguir resume quais funções e atributos de instrução um driver ODBC 3.x deve implementar para cursores de bloco e roláveis.

Função ou

atributo de instrução
Comentários
SQL_ATTR_ROW_STATUS_PTR Define o endereço da matriz de status da linha preenchida por SQLFetch e SQLFetchScroll. Essa matriz também será preenchida por SQLSetPos se SQLSetPos for chamado no estado da instrução S6. Se SQLSetPos for chamado no estado S7, essa matriz não será preenchida, mas a matriz apontada pelo argumento RowStatusArray de SQLExtendedFetch será preenchida. Para obter mais informações, consulte Transições de instrução no apêndice B: tabelas de transição de estado ODBC.
SQL_ATTR_ROWS_FETCHED_PTR Define o endereço do buffer no qual SQLFetch e SQLFetchScroll retornam o número de linhas buscadas. Se SQLExtendedFetch for chamado, esse buffer não será preenchido, mas o argumento RowCountPtr apontará para o número de linhas buscadas.
SQL_ATTR_ROW_ARRAY_SIZE Define o tamanho do conjunto de linhas usado por SQLFetch e SQLFetchScroll.
SQL_ROWSET_SIZE Define o tamanho do conjunto de linhas usado por SQLExtendedFetch. Os drivers ODBC 3.x implementam isso se quiserem trabalhar com aplicativos ODBC 2.x que chamam SQLExtendedFetch ou SQLSetPos.
SQLBulkOperations Se um driver ODBC 3.x deve funcionar com aplicativos ODBC 2.x que usam SQLSetPos com uma Operação de SQL_ADD, o driver deve dar suporte a SQLSetPos com uma Operação de SQL_ADD além de SQLBulkOperations com uma Operação de SQL_ADD.
Sqlextendedfetch Retorna o conjunto de linhas especificado. Os drivers ODBC 3.x implementam isso se quiserem trabalhar com aplicativos ODBC 2.x que chamam SQLExtendedFetch ou SQLSetPos. Veja a seguir os detalhes da implementação:

– O driver recupera o tamanho do conjunto de linhas do valor do atributo de instrução SQL_ROWSET_SIZE.
– O driver recupera o endereço da matriz de status da linha do argumento RowStatusArray , não o atributo de instrução SQL_ATTR_ROW_STATUS_PTR. O argumento RowStatusArray em uma chamada para SQLExtendedFetch não deve ser um ponteiro nulo. (Observe que, no ODBC 3.x, o atributo de instrução SQL_ATTR_ROW_STATUS_PTR pode ser um ponteiro nulo.)
– O driver recupera o endereço do buffer buscado de linhas do argumento RowCountPtr , não do atributo de instrução SQL_ATTR_ROWS_FETCHED_PTR.
– O driver retorna SQLSTATE 01S01 (Erro na linha) para indicar que ocorreu um erro enquanto as linhas eram buscadas por uma chamada para SQLExtendedFetch. Um driver ODBC 3.x deve retornar SQLSTATE 01S01 (Erro na linha) somente quando SQLExtendedFetch é chamado, não quando SQLFetch ou SQLFetchScroll é chamado. Para preservar a compatibilidade com versões anteriores, quando SQLSTATE 01S01 (Erro em linha) é retornado por SQLExtendedFetch, o Gerenciador de Driver não ordena registros de status na fila de erros de acordo com as regras declaradas na seção "Sequência de Registros de Status" de SQLGetDiagField.
SQLFetch Retorna o próximo conjunto de linhas. Veja a seguir os detalhes da implementação:

– O driver recupera o tamanho do conjunto de linhas do valor do atributo de instrução SQL_ATTR_ROW_ARRAY_SIZE.
– O driver recupera o endereço da matriz de status da linha do atributo de instrução SQL_ATTR_ROW_STATUS_PTR.
– O driver recupera o endereço do buffer buscado de linhas do atributo de instrução SQL_ATTR_ROWS_FETCHED_PTR.
– O aplicativo pode misturar chamadas entre SQLFetchScroll e SQLFetch.
- SQLFetch retornará indicadores se a coluna 0 estiver associada.
- SQLFetch pode ser chamado para retornar mais de uma linha.
– O driver não retorna SQLSTATE 01S01 (Erro na linha) para indicar que ocorreu um erro enquanto as linhas eram buscadas por uma chamada para SQLFetch.
SQLFetchScroll Retorna o conjunto de linhas especificado. Veja a seguir os detalhes da implementação:

– O driver recupera o tamanho do conjunto de linhas do atributo de instrução SQL_ATTR_ROW_ARRAY_SIZE.
– O driver recupera o endereço da matriz de status da linha do atributo de instrução SQL_ATTR_ROW_STATUS_PTR.
– O driver recupera o endereço do buffer buscado de linhas do atributo de instrução SQL_ATTR_ROWS_FETCHED_PTR.
– O aplicativo pode misturar chamadas entre SQLFetchScroll e SQLFetch.
– O driver não retorna SQLSTATE 01S01 (Erro na linha) para indicar que ocorreu um erro enquanto as linhas eram buscadas por uma chamada para SQLFetchScroll.
SQLSetPos Executa várias operações posicionadas. Veja a seguir os detalhes da implementação:

- Isso pode ser chamado nos estados de instrução S6 ou S7. Para obter mais detalhes, consulte Transições de instrução no apêndice B: tabelas de transição de estado ODBC.
– Se isso for chamado no estado de instrução S5 ou S6, o driver recuperará o tamanho do conjunto de linhas do atributo de instrução SQL_ATTR_ROWS_FETCHED_PTR e o endereço da matriz de status da linha do atributo de instrução SQL_ATTR_ROW_STATUS_PTR.
- Se isso for chamado no estado de instrução S7, o driver recuperará o tamanho do conjunto de linhas do atributo de instrução SQL_ROWSET_SIZE e o endereço da matriz de status da linha do argumento RowStatusArray de SQLExtendedFetch.
– O driver retorna SQLSTATE 01S01 (Erro na linha) apenas para indicar que ocorreu um erro enquanto as linhas eram buscadas por uma chamada para SQLSetPos para executar uma operação em massa quando a função é chamada no estado S7. Para preservar a compatibilidade com versões anteriores, se SQLSTATE 01S01 (Erro em linha) for retornado por SQLSetPos, o Gerenciador de Driver não ordenará registros de status na fila de erros de acordo com as regras declaradas na seção "Sequência de Registros de Status" de SQLGetDiagField.
– Se o driver deve trabalhar com aplicativos ODBC 2.x que chamam SQLSetPos com um argumento Operation de SQL_ADD, o driver deve dar suporte a SQLSetPos com um argumento Operation de SQL_ADD.