Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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?.
Funções relacionadas
| 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 |