Compartilhar via


SQLSetDescField e SQLSetDescRec (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 das funções SQLSetDescField e SQLSetDescRec na biblioteca de cursores. Para obter informações gerais sobre essas funções, consulte Função SQLSetDescField e Função SQLSetDescRec.

A biblioteca de cursores executa SQLSetDescField quando é chamada para retornar o valor dos campos definidos para colunas de indicador:

SQL_DESC_DATA_PTR

SQL_DESC_INDICATOR_PTR

SQL_DESC_OCTET_LENGTH_PTR

SQL_DESC_LENGTH

SQL_DESC_OCTET_LENGTH

SQL_DESC_DATETIME_INTERVAL_CODE

SQL_DESC_SCALE

SQL_DESC_PRECISION

SQL_DESC_TYPE

SQL_DESC_NAME

SQL_DESC_UNNAMED

SQL_DESC_NULLABLE

A biblioteca de cursores executa chamadas para SQLSetDescRec para uma coluna de indicador.

Ao trabalhar com um driver ODBC 2.x , a biblioteca de cursores retorna SQLSTATE HY090 (comprimento de buffer ou cadeia de caracteres inválida) quando SQLSetDescField ou SQLSetDescRec é chamado para definir o campo SQL_DESC_OCTET_LENGTH para o registro de indicador de um ARD como um valor não igual a 4. Ao trabalhar com um driver ODBC 3.x , a biblioteca de cursores permite que o buffer seja de qualquer tamanho.

A biblioteca de cursores executa SQLSetDescField quando é chamada para retornar o valor do campo SQL_DESC_BIND_OFFSET_PTR, SQL_DESC_BIND_TYPE, SQL_DESC_ROW_ARRAY_SIZE ou SQL_DESC_ROW_STATUS_PTR. Esses campos podem ser retornados para qualquer linha, não apenas para a linha de indicador.

A biblioteca de cursores não executa SQLSetDescField para alterar nenhum campo de descritor diferente dos campos mencionados anteriormente. Se um aplicativo chamar SQLSetDescField para definir qualquer outro campo enquanto a biblioteca de cursores for carregada, a chamada será passada para o driver.

A biblioteca de cursores dá suporte à alteração dinâmica dos campos SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR e SQL_DESC_OCTET_LENGTH_PTR de qualquer linha de um descritor de linha de aplicativo dinamicamente (após uma chamada para SQLExtendedFetch, SQLFetch ou SQLFetchScroll). O campo SQL_DESC_OCTET_LENGTH_PTR pode ser alterado para um ponteiro nulo apenas para desassociar o buffer de comprimento de uma coluna.

A biblioteca de cursores não dá suporte à alteração do campo SQL_DESC_BIND_TYPE em um APD ou ARD quando um cursor está aberto. O campo SQL_DESC_BIND_TYPE só pode ser alterado depois que o cursor é fechado e antes que um novo cursor seja aberto. Os únicos campos de descritor aos quais a biblioteca de cursores dá suporte à alteração quando um cursor está aberto são SQL_DESC_ARRAY_STATUS_PTR, SQL_DESC_BIND_OFFSET_PTR, SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR, SQL_DESC_OCTET_LENGTH_PTR e SQL_DESC_ROWS_PROCESSED_PTR.

A biblioteca de cursores não dá suporte à modificação do campo SQL_DESC_COUNT do ARD depois que SQLExtendedFetch ou SQLFetchScroll tiver sido chamado e antes do cursor ser fechado.