Sdílet prostřednictvím


FUNKCE SQLStatistics

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).PAGES

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

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