Função SQLNumResultCols

Conformidade
Versão Introduzida: Normas ODBC 1.0 Conformidade: ISO 92

Summary
SQLNumResultCols devolve o número de colunas num conjunto de resultados.

Syntax

  
SQLRETURN SQLNumResultCols(  
     SQLHSTMT        StatementHandle,  
     SQLSMALLINT *   ColumnCountPtr);  

Arguments

HandleStatement
[Entrada] Identificador do extrato.

ColumnCountPtr
[Saída] Apontar para um buffer onde devolver o número de colunas no conjunto de resultados. Esta contagem não inclui uma coluna de marcadores encadernada.

Devoluções

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_ERROR ou SQL_INVALID_HANDLE.

Diagnósticos

Quando SQLNumResultCols devolve SQL_ERROR ou SQL_SUCCESS_WITH_INFO, pode ser obtido um valor SQLSTATE associado ao chamar SQLGetDiagRec com um HandleType de SQL_HANDLE_STMT e um Handle de StatementHandle. A tabela seguinte lista os valores SQLSTATE comumente devolvidos pelo SQLNumResultCols e explica cada um deles no contexto desta função; a notação "(DM)" precede as descrições dos SQLSTATEs devolvidas pelo Gestor de Drivers. O código de retorno associado a cada valor SQLSTATE é SQL_ERROR, salvo indicação em contrário.

SQLSTATE Erro Description
01000 Aviso geral Mensagem informativa específica para o condutor. (Função devolve SQL_SUCCESS_WITH_INFO.)
08S01 Falha da ligação de comunicação A ligação de comunicação entre o driver e a fonte de dados à qual o driver estava ligado falhou antes de a função concluir o processamento.
HY000 Erro geral Ocorreu um erro para o qual não existia um SQLSTATE específico e para o qual não estava definido nenhum SQLSTATE específico da implementação. A mensagem de erro devolvida pelo SQLGetDiagRec no buffer *MessageText descreve o erro e a sua causa.
HY001 Erro de alocação de memória O driver não conseguia alocar a memória necessária para suportar a execução ou conclusão da função.
HY008 Operação cancelada O processamento assíncrono foi ativado para o StatementHandle. A função era chamada e, antes de terminar a execução, o SQLCancel ou SQLCancelHandle era chamado no StatementHandle; a função era então chamada novamente no StatementHandle.

A função era chamada e, antes de terminar a execução, o SQLCancel ou SQLCancelHandle era chamado no StatementHandle a partir de um thread diferente numa aplicação multithread.
HY010 Erro de sequência de funções (DM) Uma função de execução assíncrona era chamada para o handle de ligação associado ao StatementHandle. Esta função assíncrona ainda estava a ser executada quando a função SQLNumResultsCols foi chamada.

(DM) SQLExecute, SQLExecDirect ou SQLMoreResults era chamado para o StatementHandle e devolvido SQL_PARAM_DATA_AVAILABLE. Esta função era chamada antes de os dados serem recuperados para todos os parâmetros transmitidos.

(DM) A função era chamada antes de chamar SQLPrepare ou SQLExecDirect para o StatementHandle.

(DM) Uma função de execução assíncrona (não esta) era chamada para o StatementHandle e continuava a ser executada quando esta função era chamada.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperations ou SQLSetPos era chamado para o StatementHandle e devolvido SQL_NEED_DATA. Esta função era chamada antes de os dados serem enviados para todos os parâmetros ou colunas de dados na execução.

Consulte a Função SQLPrepare para detalhes sobre quando um handle de instrução pode ser libertado.
HY013 Erro de gestão de memória A chamada de função não podia ser processada porque os objetos de memória subjacentes não podiam ser acedidos, possivelmente devido a condições de baixa memória.
HY117 A ligação é suspensa devido ao estado desconhecido da transação. Apenas funções de desconexão e de leitura são permitidas. (DM) Para mais informações sobre o estado suspenso, veja Função SQLEndTran.
HYT01 Expirou o tempo limite de ligação O período de timeout da ligação expirou antes de a fonte de dados responder ao pedido. O período de tempo de expiração da ligação é definido através do SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT.
IM001 O driver não suporta esta função (DM) O driver associado ao StatementHandle não suporta a função.
IM017 A sondagem está desativada no modo de notificação assíncrona Sempre que o modelo de notificação é utilizado, o sonding é desativado.
IM018 O SQLCompleteAsync não foi chamado para completar a operação assíncrona anterior neste handle. Se a chamada de função anterior no handle devolver SQL_STILL_EXECUTING e se o modo de notificação estiver ativado, o SQLCompleteAsync deve ser chamado no handle para fazer o pós-processamento e completar a operação.

O SQLNumResultCols pode devolver qualquer estado SQLSTATE que possa ser devolvido por SQLPrepare ou SQLExecute quando chamado após SQLPrepare e antes do SQLExecute, dependendo de quando a fonte de dados avalia a instrução SQL associada à instrução.

Comments

O SQLNumResultCols só pode ser chamado com sucesso quando a instrução está no estado preparado, executado ou posicionado.

Se a instrução associada ao StatementHandle não devolver colunas, o SQLNumResultCols define *ColumnCountPtr a 0.

O número de colunas devolvidas pelo SQLNumResultCols é o mesmo valor do campo SQL_DESC_COUNT do IRD.

Para mais informações, consulte Foi criado um conjunto de resultados? e Como é usado os metadados?.

Para obter informações sobre Veja
Ligar um buffer a uma coluna num conjunto de resultados Função SQLBindCol
Cancelamento do processamento de extratos Função SQLCancel
Devolver informação sobre uma coluna num conjunto de resultados Função SQLColAttribute
Devolver informação sobre uma coluna num conjunto de resultados Função SQLDescribeCol
Execução de uma instrução SQL Função SQLExecDirect
Execução de uma instrução SQL preparada Função SQLExecute
Buscar um bloco de dados ou percorrer um conjunto de resultados Função SQLFetchScroll
Obter uma única linha ou um bloco de dados numa direção apenas direta Função SQLFetch
Buscar parte ou a totalidade de uma coluna de dados Função SQLGetData
Preparação de uma instrução SQL para execução Função SQLPrepare
Definindo opções de rolagem do cursor Função SQLSetStmtAttr