Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
SQLStatistics Recupera uma lista de estatísticas sobre uma única tabela e os índices associados a essa tabela. O condutor devolve a informação como conjunto de resultados.
Conformidade
Versão introduzida: Conformidade com as Normas ODBC 1.0: ISO 92
Sintaxe
SQLRETURN SQLStatistics(
SQLHSTMT StatementHandle ,
SQLCHAR * CatalogName ,
SQLSMALLINT NameLength1 ,
SQLCHAR * SchemaName ,
SQLSMALLINT NameLength2 ,
SQLCHAR * TableName ,
SQLSMALLINT NameLength3 ,
SQLUSMALLINT Unique ,
SQLUSMALLINT Reserved);
Arguments
HandleStatement
[Entrada] Identificador do extrato.
Nome do Catálogo
[Entrada] Nome do catálogo. Se um driver suporta catálogos para algumas tabelas mas não para outras, como quando o driver recupera dados de diferentes SGBD, uma string vazia ("") indica aquelas tabelas que não têm catálogos.
O CatalogName não pode conter um padrão de pesquisa em cadeia de caracteres.
Se o SQL_ATTR_METADATA_ID atributo da instrução estiver definido como SQL_TRUE, CatalogName é tratado como identificador e o seu caso não é significativo. Se for SQL_FALSE, Nome do Catálogo é um argumento comum; é tratado literalmente, e o seu caso é significativo. Para mais informações, consulte Argumentos em Funções de Catálogo.
NomeComprimento1
[Entrada] Comprimento em caracteres do CatalogName.
Nome do esquema
[Entrada] Nome do esquema. Se um driver suporta esquemas para algumas tabelas mas não para outras, como quando o driver recupera dados de diferentes SGBD, uma string vazia ("") indica as tabelas que não têm esquemas.
O SchemaName não pode conter um padrão de pesquisa de cadeias.
Se o SQL_ATTR_METADATA_ID atributo da instrução for definido como SQL_TRUE, SchemaName é tratado como um identificador e o seu caso não é significativo. Se for SQL_FALSE, o Nome do Esquema é um argumento comum; é tratado literalmente, e o seu caso é significativo.
NomeComprimento2
[Entrada] Comprimento em caracteres do NomeEsquema.
Nome da tabela
[Entrada] Nome da mesa. Este argumento não pode ser um ponto nulo. O TableName não consegue conter um padrão de pesquisa de cadeias.
Se o SQL_ATTR_METADATA_ID atributo da instrução for definido como SQL_TRUE, TableName é tratado como identificador e o seu caso não é significativo. Se for SQL_FALSE, TableName é um argumento comum; é tratado literalmente, e o seu caso é significativo.
NomeComprimento3
[Entrada] Comprimento em caracteres do TableName.
Único
[Entrada] Tipo de índice: SQL_INDEX_UNIQUE ou SQL_INDEX_ALL.
Reservado
[Entrada] Indica a importância das CARDINALITY colunas e PAGES no conjunto de resultados. As seguintes opções afetam apenas o retorno das CARDINALITY colunas e PAGES ; a informação do índice é devolvida mesmo que CARDINALITY e PAGES não forem devolvidas.
SQL_ENSURE solicita que o controlador recupere incondicionalmente as estatísticas. (Drivers que cumprem apenas o padrão Open Group e não suportam extensões ODBC não poderão suportar SQL_ENSURE.)
SQL_QUICK solicita que o driver recupere os CARDINALITY e PAGES só se estiverem facilmente disponíveis no servidor. Neste caso, o driver não garante que os valores estão atuais. (As aplicações escritas para o padrão Open Group receberão sempre SQL_QUICK comportamento de drivers compatíveis com ODBC 3.x.)
Devoluções
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_ERROR, ou SQL_INVALID_HANDLE.
Diagnóstico
Quando SQLStatistics retorna SQL_ERROR ou SQL_SUCCESS_WITH_INFO, um valor associado SQLSTATE pode ser obtido chamando SQLGetDiagRec com um HandleType de SQL_HANDLE_STMT e um Handle de StatementHandle. A tabela seguinte lista os SQLSTATE valores normalmente devolvidos por SQLStatistics e explica cada um no contexto desta função; a notação (DM) precede as descrições de cada SQLSTATE um devolvidas pelo Gestor de Drivers. O código de retorno associado a cada SQLSTATE valor é SQL_ERROR, salvo indicação em contrário.
| SQLSTATE | Erro | Description |
|---|---|---|
01000 |
Aviso geral | Mensagem informativa específica para o condutor. (A função retorna 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. |
24000 |
Estado do cursor inválido | Um cursor estava aberto no HandleStatement, e SQLFetch ou SQLFetchScroll tinha sido chamado. Este erro é devolvido pelo Gestor de Condutores se SQLFetch for ou SQLFetchScroll não tiver retornado SQL_NO_DATA e é devolvido pelo condutor se SQLFetch ou SQLFetchScroll tiver retornado SQL_NO_DATA.Um cursor estava aberto no StatementHandle, mas SQLFetch ou SQLFetchScroll não tinha sido chamado. |
40001 |
Falha de serialização | A transação foi revertida devido a um bloqueio de recursos com outra transação. |
40003 |
Conclusão da afirmação desconhecida | A ligação associada falhou durante a execução desta função, e o estado da transação não pode ser determinado. |
HY000 |
Erro geral | Ocorreu um erro para o qual não existia uma especificidade SQLSTATE específica e para a qual nenhuma implementação SQLSTATE específica foi definida. A mensagem de erro devolvida SQLGetDiagRec no *MessageText buffer descreve o erro e a sua causa. |
HY001 |
Erro de alocação de memória | O controlador não conseguiu 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, SQLCancel ou SQLCancelHandle ser chamada no StatementHandle, e depois a função era chamada novamente no StatementHandle.A função era chamada, e antes de terminar a execução, SQLCancel ou SQLCancelHandle era chamada no StatementHandle a partir de outro thread numa aplicação multithread. |
HY009 |
Uso inválido do ponteiro nulo | O argumento TableName era um ponteiro nulo. O SQL_ATTR_METADATA_ID atributo da instrução foi definido para SQL_TRUE, o argumento CatalogName era um ponteiro nulo, e o SQL_CATALOG_NAMEInfoType devolve que os nomes de catálogo são suportados.(DM) O SQL_ATTR_METADATA_ID atributo da instrução foi definido para SQL_TRUE, e o argumento SchemaName era um ponteiro nulo. |
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 continuava a ser executada quando a SQLStatistics função era chamada.(DM) SQLExecute, SQLExecDirect, ou SQLMoreResults foi chamado para o HandleStatement e retornou SQL_PARAM_DATA_AVAILABLE. Esta função era chamada antes de os dados serem recuperados para todos os parâmetros transmitidos.(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 foi chamada para o HandleStatement e retornou 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. |
HY090 |
Comprimento inválido da corda ou do buffer | (DM) O valor de um dos argumentos do comprimento do nome era menor que 0 mas não igual a SQL_NTS.O valor de um dos argumentos do comprimento do nome excedia o valor máximo de comprimento do nome correspondente. |
HY100 |
Opção de unicidade fora do intervalo | (DM) Foi especificado um valor único inválido. |
HY101 |
Tipo de opção de precisão fora do alcance | (DM) Foi especificado um valor Reservado inválido. |
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. |
HYC00 |
Funcionalidade opcional não implementada | Foi especificado um catálogo, e o driver ou fonte de dados não suporta catálogos. Foi especificado um esquema, e o driver ou fonte de dados não suporta esquemas. A combinação das definições atuais dos SQL_ATTR_CONCURRENCY atributos da instrução e SQL_ATTR_CURSOR_TYPE não era suportada pelo driver ou pela fonte de dados.O SQL_ATTR_USE_BOOKMARKS atributo da instrução foi definido para SQL_UB_VARIABLE, e o SQL_ATTR_CURSOR_TYPE atributo da instrução foi definido para um tipo de cursor para o qual o driver não suporta favoritos. |
HYT00 |
O tempo expirou | O período de tempo de espera da consulta expirava antes de a fonte de dados devolver o conjunto de resultados solicitado. O período de timeout é definido através de SQLSetStmtAttr, SQL_ATTR_QUERY_TIMEOUT. |
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 extinção da ligação é definido através de 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 |
SQLCompleteAsync não foi chamado para completar a operação assíncrona anterior neste handle. |
Se a chamada de função anterior no handle regressar SQL_STILL_EXECUTING e se o modo de notificação estiver ativado, SQLCompleteAsync deve ser chamada no handle para fazer pós-processamento e completar a operação. |
Comments
SQLStatistics retorna informação sobre uma única tabela como conjunto padrão de resultados, ordenado por NON_UNIQUE, TYPE, INDEX_QUALIFIER, INDEX_NAME, e ORDINAL_POSITION. O conjunto de resultados combina informação estatística (nas CARDINALITY colunas e PAGES do conjunto de resultados) para a tabela com informações sobre cada índice. Para informações sobre como esta informação pode ser utilizada, consulte Utilizações dos Dados de Catálogo.
Para determinar os comprimentos reais dos , , , e COLUMN_NAME das colunas, uma aplicação pode chamar SQLGetInfo com as SQL_MAX_CATALOG_NAME_LENopções, SQL_MAX_SCHEMA_NAME_LEN, SQL_MAX_TABLE_NAME_LEN, e SQL_MAX_COLUMN_NAME_LEN . TABLE_NAMETABLE_SCHEMTABLE_CAT
Observação
Para mais informações sobre o uso geral, argumentos e dados devolvidos das funções de catálogo ODBC, consulte Funções de Catálogo.
As colunas seguintes foram renomeadas para ODBC 3.x. As alterações no nome das colunas não afetam a compatibilidade retroativa porque as aplicações associam por número de coluna.
| Coluna ODBC 2.0 | Coluna ODBC 3.x |
|---|---|
TABLE_QUALIFIER |
TABLE_CAT |
TABLE_OWNER |
TABLE_SCHEM |
SEQ_IN_INDEX |
ORDINAL_POSITION |
COLLATION |
ASC_OR_DESC |
A tabela seguinte lista as colunas do conjunto de resultados. Colunas adicionais para além da coluna 13 (FILTER_CONDITION) podem ser definidas pelo driver. Uma aplicação deve aceder a colunas específicas do driver contando decrescentemente a partir do final do conjunto de resultados em vez de especificar uma posição ordinal explícita. Para mais informações, consulte Dados Devolvidos por Funções de Catálogo.
| Nome da coluna | Número da coluna | Tipo de dados | Comments |
|---|---|---|---|
TABLE_CAT (ODBC 1.0) |
1 | Varchar | Nome do catálogo da tabela à qual a estatística ou índice se aplica; NULL Se não for aplicável à fonte de dados. Se um driver suporta catálogos para algumas tabelas mas não para outras, como quando o driver recupera dados de diferentes SGBD, devolve uma string vazia ("") para as tabelas que não têm catálogos. |
TABLE_SCHEM (ODBC 1.0) |
2 | Varchar | Nome do esquema da tabela à qual a estatística ou índice se aplica; NULL Se não for aplicável à fonte de dados. Se um driver suportar esquemas para algumas tabelas mas não para outras, como quando o driver recupera dados de diferentes SGBD, devolve uma string vazia ("") para as tabelas que não têm esquemas. |
TABLE_NAME (ODBC 1.0) |
3 |
Varchar não NULL |
Nome da tabela à qual a estatística ou índice se aplica. |
NON_UNIQUE (ODBC 1.0) |
4 | smallint | Indica se o índice não permite valores duplicados:SQL_TRUE se os valores do índice podem ser não únicos.SQL_FALSE se os valores do índice devem ser únicos.NULL é devolvido se TYPE for SQL_TABLE_STAT. |
INDEX_QUALIFIER (ODBC 1.0) |
5 | Varchar | O identificador usado para qualificar o nome do índice fazendo um DROP INDEX; NULL é devolvido se um qualificador de índice não for suportado pela fonte de dados ou se TYPE for SQL_TABLE_STAT. Se um valor não nulo for devolvido nesta coluna, deve ser usado para qualificar o nome do índice numa DROP INDEX instrução; caso contrário, deve TABLE_SCHEM ser usado para qualificar o nome do índice. |
INDEX_NAME (ODBC 1.0) |
6 | Varchar | Nome do índice; NULL é devolvido se TYPE for SQL_TABLE_STAT. |
TYPE (ODBC 1.0) |
7 |
smallint not NULL |
Tipo de informação devolvida:SQL_TABLE_STATindica uma estatística para a tabela (na CARDINALITY coluna ou).PAGESSQL_INDEX_BTREE indica um índice B-Tree.SQL_INDEX_CLUSTERED indica um índice agrupado.SQL_INDEX_CONTENT indica um índice de conteúdos.SQL_INDEX_HASHED indica um índice com hash.SQL_INDEX_OTHER indica outro tipo de índice. |
ORDINAL_POSITION (ODBC 1.0) |
8 | smallint | Número de sequência da coluna no índice (começando por 1); NULL é devolvido se TYPE for SQL_TABLE_STAT. |
COLUMN_NAME (ODBC 1.0) |
9 | Varchar | Nome da coluna. Se a coluna for baseada numa expressão, como SALARY + BENEFITS, a expressão é devolvida; se a expressão não puder ser determinada, é devolvida uma cadeia vazia.
NULL é devolvido se TYPE for SQL_TABLE_STAT. |
ASC_OR_DESC (ODBC 1.0) |
10 | char(1) | Ordem para a coluna: "A" para ascendente; "D" de descer; NULL é devolvido se a sequência de ordenação por colunas não for suportada pela fonte de dados ou se TYPE for SQL_TABLE_STAT. |
CARDINALITY (ODBC 1.0) |
11 | integer | Cardinalidade da tabela ou índice; número de linhas na tabela se TYPE for SQL_TABLE_STAT; número de valores únicos no índice se TYPE não SQL_TABLE_STATfor ; NULL é devolvido se o valor não estiver disponível na fonte de dados. |
PAGES (ODBC 1.0) |
12 | integer | Número de páginas usadas para armazenar o índice ou tabela; número de páginas para a tabela se TYPE for SQL_TABLE_STAT; número de páginas para o índice se TYPE não SQL_TABLE_STATfor ; NULL é devolvido se o valor não estiver disponível na fonte de dados ou se não for aplicável à fonte de dados. |
FILTER_CONDITION (ODBC 2.0) |
13 | Varchar | Se o índice for um índice filtrado, esta é a condição de filtro, como SALARY > 30000; se a condição de filtro não puder ser determinada, esta é uma cadeia vazia.NULL Se o índice não for um índice filtrado, não se pode determinar se o índice é um índice filtrado, ou TYPE se é SQL_TABLE_STAT. |
Se a linha do conjunto de resultados corresponder a uma tabela, o driver define TYPE para SQL_TABLE_STAT e define NON_UNIQUE, INDEX_QUALIFIER, INDEX_NAME, ORDINAL_POSITION, COLUMN_NAME, e ASC_OR_DESC para NULL. Se CARDINALITY ou PAGES não estiverem disponíveis na fonte de dados, o driver define-as para NULL.
Exemplo de código
Para um exemplo de código de uma função semelhante, veja Função SQLColumns.
Funções relacionadas
| Para obter informações sobre | Artigo |
|---|---|
| Ligar um buffer a uma coluna num conjunto de resultados | Função SQLBindCol |
| Cancelamento do processamento de extratos | Função SQLCancel |
| Buscar uma única linha ou um bloco de dados numa direção apenas direta. | Função SQLFetch |
| Buscar um bloco de dados ou percorrer um conjunto de resultados | Função SQLFetchScroll |
| Devolvendo as colunas de chaves estrangeiras | Função SQLForeignKeys |
| Devolver as colunas de uma chave primária | Função SQLPrimaryKeys |