Função SQLNumParams

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

Summary
O SQLNumParams devolve o número de parâmetros numa instrução SQL.

Syntax

  
SQLRETURN SQLNumParams(  
     SQLHSTMT        StatementHandle,  
     SQLSMALLINT *   ParameterCountPtr);  

Arguments

HandleStatement
[Entrada] Identificador do extrato.

ParameterCountPtr
[Saída] Apontar para um buffer onde devolver o número de parâmetros na instrução.

Devoluções

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_ERROR ou SQL_INVALID_HANDLE.

Diagnósticos

Quando SQLNumParams retorna 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 SQLNumParams e explica cada um 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 SQLNumParams era chamada e, antes de terminar a execução, o SQLCancel ou SQLCancelHandle era chamado no StatementHandle; a função SQLNumParams era então chamada novamente no StatementHandle.

Ou, a função SQLNumParams 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) A função era chamada antes de chamar SQLPrepare ou SQLExecDirect para o StatementHandle.

(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 correr quando a função SQLNumParams foi chamada.

(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.
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.

Comments

O SQLNumParams só pode ser chamado depois de o SQLPrepare ter sido chamado.

Se a instrução associada ao StatementHandle não contiver parâmetros, o SQLNumParams define *ParameterCountPtr a 0.

O número de parâmetros devolvidos pelo SQLNumParams é o mesmo valor do campo SQL_DESC_COUNT do IPD.

Para mais informações, veja Descrever Parâmetros.

Para obter informações sobre Veja
Ligar um buffer a um parâmetro Função SQLBindParameter
Devolver informação sobre um parâmetro numa instrução Função SQLDescribeParam