Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
SQLStatistics načte seznam statistik o jedné tabulce a indexy přidružené k tabulce. Ovladač vrátí informace jako sadu výsledků.
Konformita
Zavedená verze: Dodržování standardů ODBC 1.0: ISO 92
Syntaxe
SQLRETURN SQLStatistics(
SQLHSTMT StatementHandle ,
SQLCHAR * CatalogName ,
SQLSMALLINT NameLength1 ,
SQLCHAR * SchemaName ,
SQLSMALLINT NameLength2 ,
SQLCHAR * TableName ,
SQLSMALLINT NameLength3 ,
SQLUSMALLINT Unique ,
SQLUSMALLINT Reserved);
Arguments
StatementHandle
[Vstup] Popisovač příkazu
CatalogName
[Vstup] Název katalogu. Pokud ovladač podporuje katalogy pro některé tabulky, ale ne pro jiné, například když ovladač načte data z různých dbMS, prázdný řetězec ("") označuje tabulky, které nemají katalogy.
CatalogName nemůže obsahovat vzor hledání řetězců.
SQL_ATTR_METADATA_ID Pokud je atribut příkazu nastaven na SQL_TRUE, CatalogName je považován za identifikátor a jeho případ není významný. Pokud je to SQL_FALSE, CatalogName je běžný argument, je zpracován doslova a jeho případ je významný. Další informace naleznete v tématu Argumenty funkce katalogu.
NameLength1
[Vstup] Délka znaků CatalogName.
Název schématu
[Vstup] Název schématu Pokud ovladač podporuje schémata pro některé tabulky, ale ne pro jiné, například když ovladač načte data z různých dbMS, prázdný řetězec ("") označuje tabulky, které nemají schémata.
SchemaName nemůže obsahovat vzor hledání řetězců.
SQL_ATTR_METADATA_ID Pokud je atribut příkazu nastaven na SQL_TRUE, SchemaName je považován za identifikátor a jeho případ není významný. Pokud je SQL_FALSEto , SchemaName je běžný argument; je ošetřen doslova a jeho případ je významný.
NameLength2
[Vstup] Délka znaků schemaName
TableName
[Vstup] Název tabulky Tento argument nemůže být ukazatelem null. TableName nemůže obsahovat vzor hledání řetězců.
SQL_ATTR_METADATA_ID Pokud je atribut příkazu nastaven na SQL_TRUE, TableName je považován za identifikátor a jeho případ není významný. Pokud je to SQL_FALSE, TableName je běžný argument; je ošetřen doslova a jeho případ je významný.
NameLength3
[Vstup] Délka znaků TableName
Jedinečný
[Vstup] Typ indexu: SQL_INDEX_UNIQUE nebo SQL_INDEX_ALL.
Rezervovaný
[Vstup] Určuje důležitost CARDINALITY sloupců v PAGES sadě výsledků. Následující možnosti mají vliv pouze na vrácení CARDINALITY sloupců a PAGES sloupců. Informace o indexu se vrátí, i když CARDINALITY se PAGES nevrátí.
SQL_ENSURE požaduje, aby ovladač bezpodmínečně načetl statistiky. (Ovladače, které vyhovují pouze standardu Open Group a nepodporují rozšíření ODBC, nebudou moct podporovat SQL_ENSURE.)
SQL_QUICK požaduje, aby ovladač načetl CARDINALITY a PAGES pouze v případě, že jsou snadno dostupné ze serveru. V tomto případě ovladač nezajišťuje, že hodnoty jsou aktuální. (Aplikace napsané do standardu Open Group vždy získají SQL_QUICK chování z ovladačů kompatibilních s rozhraním ODBC 3.x.)
Návraty
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_ERROR, nebo SQL_INVALID_HANDLE.
Diagnostika
Při SQLStatistics vrácení SQL_ERROR nebo SQL_SUCCESS_WITH_INFOlze přidruženou SQLSTATE hodnotu získat voláním SQLGetDiagRecHandleType z SQL_HANDLE_STMT a Handle of StatementHandle. Následující tabulka uvádí SQLSTATE hodnoty, které SQLStatistics obvykle vrací, a vysvětluje je v kontextu této funkce. Zápis (DM) předchází popisy jednotlivých SQLSTATE vrácených manažerem řidiče. Návratový kód přidružený ke každé SQLSTATE hodnotě je SQL_ERROR, pokud není uvedeno jinak.
| SQLSTATE | Error | Description |
|---|---|---|
01000 |
Obecné upozornění | Informační zpráva specifická pro řidiče (Funkce vrátí SQL_SUCCESS_WITH_INFO.) |
08S01 |
Selhání komunikačního propojení | Komunikační propojení mezi ovladačem a zdrojem dat, ke kterému byl ovladač připojen, selhalo před dokončením zpracování funkce. |
24000 |
Neplatný stav kurzoru | Kurzor byl otevřen na PříkazHandle a SQLFetchSQLFetchScroll byl volána. Tato chyba je vrácena správcem ovladačů, pokud SQLFetch nebo SQLFetchScroll nevrácela SQL_NO_DATA a je vrácena ovladačem, pokud SQLFetch nebo SQLFetchScroll vrátil SQL_NO_DATA.Kurzor byl otevřen na PříkazHandle, ale SQLFetch nebo SQLFetchScroll nebyl volán. |
40001 |
Selhání serializace | Transakce byla vrácena zpět kvůli vzájemnému zablokování prostředku s jinou transakcí. |
40003 |
Neznámé dokončování příkazů | Přidružené připojení selhalo během provádění této funkce a stav transakce nelze určit. |
HY000 |
Obecná chyba | Došlo k chybě, pro kterou nebyla definována žádná konkrétní SQLSTATE implementace a pro kterou nebyla definována žádná implementace SQLSTATE . Chybová zpráva vrácená SQLGetDiagRec v vyrovnávací paměti *MessageText popisuje chybu a její příčinu. |
HY001 |
Chyba přidělení paměti | Ovladač nemohl přidělit paměť, která je nutná k podpoře provádění nebo dokončování funkce. |
HY008 |
Operace byla zrušena. | Asynchronní zpracování bylo povoleno pro StatementHandle. Funkce byla volána a před dokončením provádění SQLCancel nebo SQLCancelHandle byla volána na PříkazHandle a pak byla funkce znovu volána na StatementHandle.Funkce byla volána a před dokončením provádění SQLCancel nebo SQLCancelHandle byla volána na PříkazHandle z jiného vlákna v vícevláknové aplikaci. |
HY009 |
Neplatné použití ukazatele null | Argument TableName byl ukazatel null. Atribut SQL_ATTR_METADATA_ID příkazu byl nastaven na SQL_TRUE, CatalogName argument byl null ukazatel a SQL_CATALOG_NAMEInfoType vrátí, že názvy katalogů jsou podporovány.(DM) Atribut SQL_ATTR_METADATA_ID příkazu byl nastaven na SQL_TRUEhodnotu a argument SchemaName byl nulový ukazatel. |
HY010 |
Chyba posloupnosti funkcí | (DM) Byla volána asynchronně spuštěná funkce pro popisovač připojení, který je přidružen k StatementHandle. Tato asynchronní funkce se stále spouštěla při SQLStatistics zavolání funkce.(DM) SQLExecute, SQLExecDirectnebo SQLMoreResults byl volána pro StatementHandle a vrácena SQL_PARAM_DATA_AVAILABLE. Tato funkce byla volána před načtením dat pro všechny streamované parametry.(DM) Pro PříkazHandle byla volána asynchronně spuštěná funkce (ne tato) a při zavolání této funkce se stále spouštěla. (DM) SQLExecute, SQLExecDirect, nebo SQLBulkOperationsSQLSetPos byl volána pro PříkazHandle a vrácen SQL_NEED_DATA. Tato funkce byla volána před odesláním dat pro všechny parametry provádění dat nebo sloupce. |
HY013 |
Chyba správy paměti | Volání funkce nebylo možné zpracovat, protože k základním objektům paměti nelze získat přístup, pravděpodobně kvůli nedostatku paměti. |
HY090 |
Neplatná délka řetězce nebo vyrovnávací paměti | (DM) Hodnota jednoho argumentu délky názvu byla menší než 0, ale nerovná se SQL_NTS.Hodnota jednoho z argumentů délky názvu překročila maximální hodnotu délky odpovídajícího názvu. |
HY100 |
Typ možnosti jedinečnosti mimo rozsah | (DM) Byla zadána neplatná jedinečná hodnota. |
HY101 |
Typ možnosti přesnosti mimo rozsah | (DM) Byla zadána neplatná rezervovaná hodnota. |
HY117 |
Připojení je pozastaveno kvůli neznámému stavu transakce. Jsou povoleny pouze funkce pro odpojení a jen pro čtení. | (DM) Další informace o pozastaveném stavu naleznete v tématu FUNKCE SQLEndTran. |
HYC00 |
Nepovinná funkce není implementována. | Byl zadán katalog a ovladač nebo zdroj dat nepodporuje katalogy. Bylo zadáno schéma a ovladač nebo zdroj dat nepodporují schémata. Kombinace aktuálních nastavení SQL_ATTR_CONCURRENCY atributů a SQL_ATTR_CURSOR_TYPE atributů příkazu nebyla podporována ovladačem nebo zdrojem dat.Atribut SQL_ATTR_USE_BOOKMARKS příkazu byl nastaven na SQL_UB_VARIABLEhodnotu a SQL_ATTR_CURSOR_TYPE atribut příkazu byl nastaven na typ kurzoru, pro který ovladač nepodporuje záložky. |
HYT00 |
Vypršel časový limit. | Vypršení časového limitu dotazu vypršelo, než zdroj dat vrátil požadovanou sadu výsledků. Časový limit je nastaven prostřednictvím SQLSetStmtAttr, SQL_ATTR_QUERY_TIMEOUT. |
HYT01 |
Vypršení časového limitu připojení | Platnost časového limitu připojení vypršela, než zdroj dat odpověděl na žádost. Doba časového limitu připojení je nastavena prostřednictvím SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT. |
IM001 |
Ovladač tuto funkci nepodporuje. | (DM) Ovladač přidružený k StatementHandle funkci nepodporuje. |
IM017 |
Dotazování je zakázané v asynchronním režimu oznámení. | Při každém použití modelu oznámení je dotazování zakázané. |
IM018 |
SQLCompleteAsync nebyla volána k dokončení předchozí asynchronní operace na tomto popisovači. |
Pokud předchozí volání funkce popisovače vrátí SQL_STILL_EXECUTING a pokud je povolený režim oznámení, SQLCompleteAsync musí být volána na popisovači, aby se po zpracování a dokončení operace. |
Comments
SQLStatisticsvrátí informace o jedné tabulce jako standardní množinu výsledků seřazených podle NON_UNIQUE, INDEX_QUALIFIERTYPE, , INDEX_NAMEa ORDINAL_POSITION. Sada výsledků kombinuje informace o statistikách (ve CARDINALITYPAGES sloupcích sady výsledků) pro tabulku s informacemi o jednotlivých indexech. Informace o použití těchto informací naleznete v tématu Použití dat katalogu.
K určení skutečných délek TABLE_CAT, , TABLE_NAMETABLE_SCHEMa COLUMN_NAME sloupců může aplikace volat SQLGetInfo s SQL_MAX_CATALOG_NAME_LEN, SQL_MAX_SCHEMA_NAME_LEN, SQL_MAX_TABLE_NAME_LENa SQL_MAX_COLUMN_NAME_LEN možnosti.
Poznámka:
Další informace o obecném použití, argumentech a vrácených datech funkcí katalogu ODBC naleznete v tématu Funkce katalogu.
Následující sloupce byly přejmenovány pro ROZHRANÍ ODBC 3.x. Změny názvu sloupce nemají vliv na zpětnou kompatibilitu, protože aplikace se sváže podle čísla sloupce.
| Sloupec ODBC 2.0 | Sloupec ODBC 3.x |
|---|---|
TABLE_QUALIFIER |
TABLE_CAT |
TABLE_OWNER |
TABLE_SCHEM |
SEQ_IN_INDEX |
ORDINAL_POSITION |
COLLATION |
ASC_OR_DESC |
Následující tabulka uvádí sloupce v sadě výsledků. Další sloupce nad sloupcem 13 (FILTER_CONDITION) mohou být definovány ovladačem. Aplikace by měla získat přístup ke sloupcům specifickým pro ovladače tím, že odpočítává od konce sady výsledků místo určení explicitní řadové pozice. Další informace naleznete v tématu Data vrácená funkcemi katalogu.
| Název sloupce | Číslo sloupce | Datový typ | Comments |
|---|---|---|---|
TABLE_CAT (ODBC 1.0) |
1 | varchar | Název katalogu tabulky, na kterou se vztahuje statistika nebo index; NULL pokud se nevztahuje na zdroj dat. Pokud ovladač podporuje katalogy pro některé tabulky, ale ne pro jiné, například když ovladač načte data z různých dbMS, vrátí prázdný řetězec ("") pro tabulky, které nemají katalogy. |
TABLE_SCHEM (ODBC 1.0) |
2 | varchar | Název schématu tabulky, na kterou se vztahuje statistika nebo index; NULL pokud se nevztahuje na zdroj dat. Pokud ovladač podporuje schémata pro některé tabulky, ale ne pro jiné, například když ovladač načte data z různých dbMS, vrátí prázdný řetězec ("") pro tabulky, které nemají schémata. |
TABLE_NAME (ODBC 1.0) |
3 |
varchar not NULL |
Název tabulky, na kterou se vztahuje statistika nebo index |
NON_UNIQUE (ODBC 1.0) |
4 | smallint | Určuje, jestli index neumožňuje duplicitní hodnoty:SQL_TRUE pokud hodnoty indexu mohou být neunique.SQL_FALSE pokud hodnoty indexu musí být jedinečné.NULL je vrácena, pokud TYPE je SQL_TABLE_STAT. |
INDEX_QUALIFIER (ODBC 1.0) |
5 | varchar | Identifikátor, který slouží k určení názvu indexu, který provádí DROP INDEX; NULL je vrácen, pokud kvalifikátor indexu není podporován zdrojem dat nebo pokud TYPE je SQL_TABLE_STAT. Pokud je v tomto sloupci vrácena hodnota, která není null, musí být použita k kvalifikaci názvu indexu u DROP INDEX příkazu. Jinak TABLE_SCHEM by se měl použít k určení názvu indexu. |
INDEX_NAME (ODBC 1.0) |
6 | varchar | Název indexu; NULL je vrácena, pokud TYPE je SQL_TABLE_STAT. |
TYPE (ODBC 1.0) |
7 |
smallint not NULL |
Typ vrácených informací:SQL_TABLE_STAToznačuje statistiku tabulky (ve CARDINALITY sloupci).PAGESSQL_INDEX_BTREE označuje index B-Tree.SQL_INDEX_CLUSTERED označuje clusterovaný index.SQL_INDEX_CONTENT označuje index obsahu.SQL_INDEX_HASHED označuje index s hodnotou hash.SQL_INDEX_OTHER označuje jiný typ indexu. |
ORDINAL_POSITION (ODBC 1.0) |
8 | smallint | Pořadové číslo sloupce v indexu (počínaje číslem 1); NULL je vrácena, pokud TYPE je SQL_TABLE_STAT. |
COLUMN_NAME (ODBC 1.0) |
9 | varchar | Název sloupce Pokud je sloupec založený na výrazu, například SALARY + BENEFITS, je vrácen výraz; pokud výraz nelze určit, vrátí se prázdný řetězec.
NULL je vrácena, pokud TYPE je SQL_TABLE_STAT. |
ASC_OR_DESC (ODBC 1.0) |
10 | char(1) | Pořadí řazení pro sloupec: "A" pro vzestupné; "D" pro sestupné; NULL je vrácena, pokud zdroj dat nepodporuje pořadí řazení sloupců nebo pokud TYPE je SQL_TABLE_STAT. |
CARDINALITY (ODBC 1.0) |
11 | integer | Kardinalita tabulky nebo indexu; počet řádků v tabulce, pokud TYPE je SQL_TABLE_STAT; počet jedinečných hodnot v indexu, pokud TYPE není SQL_TABLE_STAT; NULL je vrácen, pokud hodnota není k dispozici ze zdroje dat. |
PAGES (ODBC 1.0) |
12 | integer | Počet stránek použitých k uložení indexu nebo tabulky; počet stránek tabulky, pokud TYPE je SQL_TABLE_STAT; počet stránek indexu, pokud TYPE není SQL_TABLE_STAT; NULL je vrácen, pokud hodnota není k dispozici ze zdroje dat nebo pokud není použitelná pro zdroj dat. |
FILTER_CONDITION (ODBC 2.0) |
13 | varchar | Pokud je index filtrovaným indexem, jedná se o podmínku filtru, například SALARY > 30000pokud podmínku filtru nelze určit, jedná se o prázdný řetězec.NULL pokud index není filtrovaný index, nedá se určit, jestli je index filtrovaný nebo TYPE je SQL_TABLE_STAT. |
Pokud řádek v sadě výsledků odpovídá tabulce, ovladač nastaví TYPE na a nastaví NON_UNIQUE, , INDEX_QUALIFIER, INDEX_NAME, ORDINAL_POSITION, COLUMN_NAMEa ASC_OR_DESC na NULLSQL_TABLE_STAT . Pokud CARDINALITY nebo PAGES nejsou dostupné ze zdroje dat, ovladač je nastaví na NULL.
Příklad kódu
Příklad kódu podobné funkce naleznete v tématu FUNKCE SQLColumns.
Související funkce
| Informace o | Article |
|---|---|
| Vytvoření vazby vyrovnávací paměti ke sloupci v sadě výsledků | SQLBindCol – funkce |
| Zrušení zpracování příkazů | SQLCancel – funkce |
| Načtení jednoho řádku nebo bloku dat ve směru jen dopředu. | Funkce SQLFetch |
| Načtení bloku dat nebo procházení sady výsledků | SQLFetchScroll – funkce |
| Vrácení sloupců cizích klíčů | FUNKCE SQLForeignKeys |
| Vrácení sloupců primárního klíče | FUNKCE SQLPrimaryKeys |