Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
SQLStatistics recupera uma lista de estatísticas sobre uma única tabela e os índices associados à tabela. O driver retorna as informações como um conjunto de resultados.
Compatibilidade
Versão introduzida: ODBC 1.0 Standards Compliance: ISO 92
Sintaxe
SQLRETURN SQLStatistics(
SQLHSTMT StatementHandle ,
SQLCHAR * CatalogName ,
SQLSMALLINT NameLength1 ,
SQLCHAR * SchemaName ,
SQLSMALLINT NameLength2 ,
SQLCHAR * TableName ,
SQLSMALLINT NameLength3 ,
SQLUSMALLINT Unique ,
SQLUSMALLINT Reserved);
Arguments
StatementHandle
[Entrada] Identificador de instrução.
Catalogname
[Entrada] Nome do catálogo. Se um driver dá suporte a catálogos para algumas tabelas, mas não para outras, como quando o driver recupera dados de DBMSs diferentes, uma cadeia de caracteres vazia ("") indica as tabelas que não têm catálogos.
CatalogName não pode conter um padrão de pesquisa de cadeia de caracteres.
Se o atributo de SQL_ATTR_METADATA_ID instrução estiver definido comoSQL_TRUE, CatalogName será tratado como um identificador e seu caso não será significativo. Se for SQL_FALSE, CatalogName é um argumento comum; é tratado literalmente e seu caso é significativo. Para obter mais informações, consulte Argumentos em funções de catálogo.
NameLength1
[Entrada] Comprimento em caracteres de CatalogName.
SchemaName
[Entrada] Nome do esquema. Se um driver der suporte a esquemas para algumas tabelas, mas não para outras, como quando o driver recupera dados de DBMSs diferentes, uma cadeia de caracteres vazia ("") indica as tabelas que não têm esquemas.
SchemaName não pode conter um padrão de pesquisa de cadeia de caracteres.
Se o atributo de SQL_ATTR_METADATA_ID instrução estiver definido comoSQL_TRUE, SchemaName será tratado como um identificador e seu caso não será significativo. Se for SQL_FALSE, SchemaName é um argumento comum; é tratado literalmente e seu caso é significativo.
NameLength2
[Entrada] Comprimento em caracteres de SchemaName.
TableName
[Entrada] Nome da tabela. Esse argumento não pode ser um ponteiro nulo. TableName não pode conter um padrão de pesquisa de cadeia de caracteres.
Se o atributo de SQL_ATTR_METADATA_ID instrução estiver definido comoSQL_TRUE, TableName será tratado como um identificador e seu caso não será significativo. Se for SQL_FALSE, TableName é um argumento comum; é tratado literalmente e seu caso é significativo.
NameLength3
[Entrada] Comprimento em caracteres de TableName.
Único
[Entrada] Tipo de índice: SQL_INDEX_UNIQUE ou SQL_INDEX_ALL.
Reserved
[Entrada] Indica a importância da coluna e PAGES do CARDINALITY conjunto de resultados. As opções a seguir afetam apenas o retorno do e PAGES das CARDINALITY colunas; as informações de índice são retornadas mesmo se CARDINALITY e PAGES não forem retornadas.
SQL_ENSURE solicita que o driver recupere incondicionalmente as estatísticas. (Os drivers que estão em conformidade apenas com o padrão open group e não dão suporte a extensões ODBC não poderão dar suporte SQL_ENSUREa .)
SQL_QUICK solicita que o driver recupere e CARDINALITYPAGES somente se estiver prontamente disponível no servidor. Nesse caso, o driver não garante que os valores sejam atuais. (Os aplicativos gravados no padrão Open Group sempre receberão SQL_QUICK o comportamento de drivers compatíveis com ODBC 3.x.)
Devoluções
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_ERRORou SQL_INVALID_HANDLE.
Diagnostics
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 Identificador de StatementHandle. A tabela a seguir lista os SQLSTATE valores normalmente retornados SQLStatistics e explica cada um deles no contexto dessa função; a notação (DM) precede as descrições de cada SQLSTATE um retornado pelo Gerenciador de Driver. O código de retorno associado a cada SQLSTATE valor é SQL_ERROR, a menos que observado o contrário.
| SQLSTATE | Erro | Description |
|---|---|---|
01000 |
Aviso geral | Mensagem informativa específica do driver. (A função retorna SQL_SUCCESS_WITH_INFO.) |
08S01 |
Falha no link de comunicação | O vínculo de comunicação entre o driver e a fonte de dados à qual o driver foi conectado falhou antes de a função concluir o processamento. |
24000 |
Estado inválido do cursor | Um cursor foi aberto no StatementHandle e SQLFetch ou SQLFetchScroll foi chamado. Esse erro será retornado pelo Gerenciador de Driver se SQLFetch ou SQLFetchScroll não tiver retornado SQL_NO_DATA e retornado pelo driver 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 deadlock de recursos com outra transação. |
40003 |
Conclusão da instrução desconhecida | A conexão associada falhou durante a execução dessa função e o estado da transação não pode ser determinado. |
HY000 |
Erro geral | Ocorreu um erro para o qual não havia nenhum específico SQLSTATE e para o qual nenhuma implementação específica SQLSTATE foi definida. A mensagem de erro retornada no SQLGetDiagRecbuffer *MessageText descreve o erro e sua causa. |
HY001 |
Erro de alocação de memória | O driver não pôde alocar memória necessária para dar suporte à execução ou à conclusão da função. |
HY008 |
Operação cancelada | O processamento assíncrono foi habilitado para o StatementHandle. A função foi chamada e, antes de concluir a execução, SQLCancel ou SQLCancelHandle foi chamada no StatementHandle e, em seguida, a função foi chamada novamente no StatementHandle.A função foi chamada e, antes de concluir a execução, SQLCancel ou SQLCancelHandle foi chamada no StatementHandle de um thread diferente em um aplicativo multithread. |
HY009 |
Uso inválido de ponteiro nulo | O argumento TableName era um ponteiro nulo. O SQL_ATTR_METADATA_ID atributo de instrução foi definido como SQL_TRUE, o argumento CatalogName era um ponteiro nulo e o SQL_CATALOG_NAMEInfoType retorna que os nomes de catálogo têm suporte.(DM) O SQL_ATTR_METADATA_ID atributo de instrução foi definido como SQL_TRUE, e o argumento SchemaName foi um ponteiro nulo. |
HY010 |
Erro de sequência de funções | (DM) Uma função de execução assíncrona foi chamada para o identificador de conexão associado ao StatementHandle. Essa função assíncrona ainda estava em execução quando a SQLStatistics função foi chamada.(DM) SQLExecute, SQLExecDirectou SQLMoreResults foi chamado para o StatementHandle e retornado SQL_PARAM_DATA_AVAILABLE. Essa função foi 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) foi chamada para o StatementHandle e ainda estava em execução quando essa função foi chamada. (DM) SQLExecute, SQLExecDirect, , SQLBulkOperationsou SQLSetPos foi chamado para o StatementHandle e retornado SQL_NEED_DATA. Essa função foi chamada antes de os dados serem enviados para todos os parâmetros ou colunas de dados em execução. |
HY013 |
Erro de gerenciamento de memória | A chamada de função não pôde ser processada porque os objetos de memória subjacentes não podiam ser acessados, possivelmente devido a condições de memória baixas. |
HY090 |
Comprimento inválido de cadeia de caracteres ou buffer | (DM) O valor de um dos argumentos de comprimento de nome era menor que 0, mas não igual a SQL_NTS.O valor de um dos argumentos de comprimento do nome excedeu o valor máximo de comprimento para o nome correspondente. |
HY100 |
Tipo de opção de exclusividade fora do intervalo | (DM) Foi especificado um valor exclusivo inválido. |
HY101 |
Tipo de opção de precisão fora do intervalo | (DM) Foi especificado um valor reservado inválido. |
HY117 |
A conexão é suspensa devido ao estado de transação desconhecido. Somente funções desconectadas e somente leitura são permitidas. | (DM) Para obter mais informações sobre o estado suspenso, consulte a Função SQLEndTran. |
HYC00 |
Recurso opcional não implementado | Um catálogo foi especificado e o driver ou fonte de dados não dá suporte a catálogos. Um esquema foi especificado e o driver ou fonte de dados não dá suporte a esquemas. A combinação das configurações atuais dos atributos de instrução e SQL_ATTR_CURSOR_TYPE do SQL_ATTR_CONCURRENCY driver não era compatível com o driver ou a fonte de dados.O SQL_ATTR_USE_BOOKMARKS atributo de instrução foi definido como SQL_UB_VARIABLE, e o atributo de SQL_ATTR_CURSOR_TYPE instrução foi definido como um tipo de cursor para o qual o driver não dá suporte a indicadores. |
HYT00 |
Tempo limite expirado | O período de tempo limite da consulta expirou antes da fonte de dados retornar o conjunto de resultados solicitado. O período de tempo limite é definido por SQLSetStmtAttrmeio de , SQL_ATTR_QUERY_TIMEOUT. |
HYT01 |
O tempo limite da conexão expirou | O período de tempo limite da conexão expirou antes da fonte de dados responder à solicitação. O período de tempo limite da conexão é definido por SQLSetConnectAttrmeio de , SQL_ATTR_CONNECTION_TIMEOUT. |
IM001 |
O driver não dá suporte a essa função | (DM) O driver associado ao StatementHandle não dá suporte à função. |
IM017 |
A sondagem está desabilitada no modo de notificação assíncrona | Sempre que o modelo de notificação é usado, a sondagem é desabilitada. |
IM018 |
SQLCompleteAsync não foi chamado para concluir a operação assíncrona anterior nesse identificador. |
Se a chamada de função anterior no identificador retornar SQL_STILL_EXECUTING e se o modo de notificação estiver habilitado, SQLCompleteAsync deverá ser chamado no identificador para realizar o pós-processamento e concluir a operação. |
Comments
SQLStatisticsretorna informações sobre uma única tabela como um conjunto de resultados padrão, ordenado por NON_UNIQUE, , TYPE, INDEX_QUALIFIERe ORDINAL_POSITIONINDEX_NAME. O conjunto de resultados combina informações de estatísticas (nas CARDINALITY colunas do PAGES conjunto de resultados) para a tabela com informações sobre cada índice. Para obter informações sobre como essas informações podem ser usadas, consulte Usos de dados de catálogo.
Para determinar os comprimentos reais de TABLE_CAT, TABLE_SCHEMe TABLE_NAMECOLUMN_NAME colunas, um aplicativo pode chamar SQLGetInfo com o SQL_MAX_CATALOG_NAME_LEN, SQL_MAX_SCHEMA_NAME_LENe SQL_MAX_TABLE_NAME_LENSQL_MAX_COLUMN_NAME_LEN opções.
Observação
Para obter mais informações sobre o uso geral, argumentos e dados retornados de funções de catálogo ODBC, consulte Funções de Catálogo.
As colunas a seguir foram renomeada para ODBC 3.x. As alterações de nome da coluna não afetam a compatibilidade com versões anteriores porque os aplicativos são associados 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 a seguir lista as colunas no conjunto de resultados. Colunas adicionais além da coluna 13 (FILTER_CONDITION) podem ser definidas pelo driver. Um aplicativo deve obter acesso a colunas específicas do driver contando o final do conjunto de resultados em vez de especificar uma posição ordinal explícita. Para obter mais informações, consulte Dados Retornados 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 dá suporte a catálogos para algumas tabelas, mas não para outras, como quando o driver recupera dados de DBMSs diferentes, ele retorna uma cadeia de caracteres 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 der suporte a esquemas para algumas tabelas, mas não para outras, como quando o driver recupera dados de DBMSs diferentes, ele retorna uma cadeia de caracteres 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 de índice puderem ser nãouniques.SQL_FALSE se os valores de índice precisarem ser exclusivos.NULL será retornado se TYPE for SQL_TABLE_STAT. |
INDEX_QUALIFIER (ODBC 1.0) |
5 | varchar | O identificador usado para qualificar o nome do índice que está fazendo um DROP INDEX; NULL será retornado se um qualificador de índice não tiver suporte pela fonte de dados ou se TYPE for SQL_TABLE_STAT. Se um valor não nulo for retornado nesta coluna, ele deverá ser usado para qualificar o nome do índice em uma DROP INDEX instrução; caso contrário, o TABLE_SCHEM valor deverá ser usado para qualificar o nome do índice. |
INDEX_NAME (ODBC 1.0) |
6 | varchar | Nome do índice; NULL será retornado se TYPE for SQL_TABLE_STAT. |
TYPE (ODBC 1.0) |
7 |
smallint não NULL |
Tipo de informação que está sendo retornada:SQL_TABLE_STATindica uma estatística para a tabela (na coluna ou PAGES na CARDINALITY tabela).SQL_INDEX_BTREE indica um índice de árvore B.SQL_INDEX_CLUSTERED indica um índice clusterizado.SQL_INDEX_CONTENT indica um índice de conteúdo.SQL_INDEX_HASHED indica um índice de hash.SQL_INDEX_OTHER indica outro tipo de índice. |
ORDINAL_POSITION (ODBC 1.0) |
8 | smallint | Número da sequência de colunas no índice (começando com 1); NULL será retornado se TYPE for SQL_TABLE_STAT. |
COLUMN_NAME (ODBC 1.0) |
9 | varchar | Nome da coluna. Se a coluna for baseada em uma expressão, como SALARY + BENEFITS, a expressão será retornada; se a expressão não puder ser determinada, uma cadeia de caracteres vazia será retornada.
NULL será retornado se TYPE for SQL_TABLE_STAT. |
ASC_OR_DESC (ODBC 1.0) |
10 | char(1) | Sequência de classificação para a coluna: "A" para crescente; "D" para decrescente; NULL será retornado se a sequência de classificação de coluna não tiver suporte pela fonte de dados ou se TYPE for SQL_TABLE_STAT. |
CARDINALITY (ODBC 1.0) |
11 | inteiro | Cardinalidade da tabela ou índice; número de linhas na tabela se TYPE for SQL_TABLE_STAT; número de valores exclusivos no índice, se TYPE não SQL_TABLE_STATestiver; NULL será retornado se o valor não estiver disponível na fonte de dados. |
PAGES (ODBC 1.0) |
12 | inteiro | 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 será retornado 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, essa será a condição de filtro, como SALARY > 30000; se a condição de filtro não puder ser determinada, essa será uma cadeia de caracteres vazia.NULL se o índice não for um índice filtrado, ele não poderá ser determinado se o índice é um índice filtrado ou TYPE se é SQL_TABLE_STAT. |
Se a linha no conjunto de resultados corresponder a uma tabela, o driver definirá TYPESQL_TABLE_STAT como e definirá NON_UNIQUE, INDEX_QUALIFIER, , INDEX_NAME, ORDINAL_POSITIONe ASC_OR_DESCCOLUMN_NAMEpara NULL. Se CARDINALITY ou PAGES não estiverem disponíveis na fonte de dados, o driver os definirá como NULL.
Exemplo de código
Para obter um exemplo de código de uma função semelhante, consulte a Função SQLColumns.
Funções relacionadas
| Para obter informações sobre | Artigo |
|---|---|
| Associar um buffer a uma coluna em um conjunto de resultados | Função SQLBindCol |
| Cancelando o processamento de instruções | Função SQLCancel |
| Buscar uma única linha ou um bloco de dados em uma direção somente para frente. | Função SQLFetch |
| Buscar um bloco de dados ou rolar por um conjunto de resultados | Função SQLFetchScroll |
| Retornando as colunas de chaves estrangeiras | Função SQLForeignKeys |
| Retornando as colunas de uma chave primária | Função SQLPrimaryKeys |