Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
SQLStatistics lekéri az egyetlen táblára és a táblához társított indexekre vonatkozó statisztikák listáját. Az illesztőprogram eredményhalmazként adja vissza az adatokat.
Megfelelés
Bevezetett verzió: ODBC 1.0 Szabványmegfelelőség: ISO 92
Szemantika
SQLRETURN SQLStatistics(
SQLHSTMT StatementHandle ,
SQLCHAR * CatalogName ,
SQLSMALLINT NameLength1 ,
SQLCHAR * SchemaName ,
SQLSMALLINT NameLength2 ,
SQLCHAR * TableName ,
SQLSMALLINT NameLength3 ,
SQLUSMALLINT Unique ,
SQLUSMALLINT Reserved);
Arguments
StatementHandle
[Bemenet] Utasításkezelő.
CatalogName
[Bemenet] Katalógus neve. Ha egy illesztőprogram egyes táblák katalógusait támogatja, mások számára azonban nem, például amikor az illesztőprogram adatokat kér le különböző DBMS-ekből, egy üres sztring ("") jelzi azokat a táblákat, amelyek nem rendelkeznek katalógusokkal.
A CatalogName nem tartalmazhat sztringkeresési mintát.
Ha az SQL_ATTR_METADATA_ID utasítás attribútuma értékre SQL_TRUEvan állítva, a CatalogName azonosítóként lesz kezelve, és az esete nem jelentős. Ha igen, akkor a SQL_FALSECatalogName egy szokásos argumentum; szó szerint van kezelve, és az esete jelentős. További információ: A Catalog Functions argumentumai.
NameLength1
[Bemenet] A CatalogName karaktereinek hossza.
Séma neve
[Bemenet] Séma neve. Ha egy illesztőprogram egyes táblák sémáit támogatja, mások esetében azonban nem, például amikor az illesztőprogram adatokat kér le a különböző DBMS-ekből, az üres sztring ("") azokat a táblákat jelöli, amelyek nem rendelkeznek sémákkal.
A SchemaName nem tartalmazhat sztringkeresési mintát.
Ha az SQL_ATTR_METADATA_ID utasítás attribútuma be van állítva SQL_TRUE, a SchemaName azonosítóként lesz kezelve, és a kis- és nagybetűk nem jelentősek. Ha ez SQL_FALSE, a SchemaName egy szokásos argumentum; szó szerint van kezelve, és az esete jelentős.
NameLength2
[Bemenet] A SchemaName karaktereinek hossza.
TáblaNév
[Bemenet] Tábla neve. Ez az argumentum nem lehet null mutató. A TableName nem tartalmazhat sztringkeresési mintát.
Ha az SQL_ATTR_METADATA_ID utasítás attribútuma be van állítva SQL_TRUE, a TableName azonosítóként lesz kezelve, és az esete nem jelentős. Ha igen SQL_FALSE, akkor a TableName egy szokásos argumentum; szó szerint van kezelve, és az esete is jelentős.
NameLength3
[Bemenet] A TableName karaktereinek hossza.
Egyedülálló
[Bemenet] Index típusa: SQL_INDEX_UNIQUE vagy SQL_INDEX_ALL.
Tartózkodó
[Bemenet] Az eredményhalmazban lévő oszlopok és PAGES oszlopok CARDINALITY fontosságát jelzi. Az alábbi beállítások csak az oszlopok és PAGES az CARDINALITY oszlopok visszatérését befolyásolják; az indexadatok akkor is vissza lesznek adva, ha CARDINALITY nemPAGES.
SQL_ENSURE kéri, hogy az illesztőprogram feltétel nélkül kérje le a statisztikákat. (Azok az illesztőprogramok, amelyek csak az Open Group szabványnak felelnek meg, és nem támogatják az ODBC-bővítményeket, nem fogják tudni támogatni SQL_ENSURE.)
SQL_QUICK kéri, hogy az illesztőprogram csak akkor kérje le az CARDINALITYPAGES illesztőprogramot, ha azok könnyen elérhetők a kiszolgálóról. Ebben az esetben a meghajtó nem biztosítja, hogy az értékek aktuálisak legyenek. (Az Open Group szabványnak írt alkalmazások mindig az ODBC 3.x-kompatibilis illesztőprogramoktól kapnak SQL_QUICK viselkedést.)
Visszatérítések
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_ERRORvagy SQL_INVALID_HANDLE.
Diagnostics
Ha SQLStatistics visszaadja SQL_ERROR vagy SQL_SUCCESS_WITH_INFO, a társított SQLSTATE érték lekérhető a HandleType ofSQL_HANDLE_STMT és a Handle of StatementHandle metódussal való hívással.SQLGetDiagRec Az alábbi táblázat felsorolja azokat az SQLSTATE értékeket, amelyeket SQLStatistics általában a függvény kontextusában ad vissza, és ismerteti azokat; a jelölés (DM) megelőzi az illesztőprogram-kezelő által visszaadott egyes SQLSTATE értékek leírását. Az egyes SQLSTATE értékekhez tartozó visszatérési kód , SQL_ERRORhacsak másként nem szerepel.
| SQLSTATE | Error | Description |
|---|---|---|
01000 |
Általános figyelmeztetés | Illesztőprogram-specifikus tájékoztató üzenet. (A függvény eredménye SQL_SUCCESS_WITH_INFO.) |
08S01 |
Kommunikációs kapcsolat hibája | Az illesztőprogram és az adatforrás közötti kommunikációs kapcsolat, amelyhez az illesztőprogram csatlakoztatva volt, nem sikerült, mielőtt a függvény befejeződött a feldolgozás. |
24000 |
Érvénytelen kurzorállapot | A kurzor meg volt nyitva a StatementHandle-on, és SQLFetch meghívták őket SQLFetchScroll . Ezt a hibát az illesztőprogram-kezelő adja vissza, ha SQLFetch vagy nem, SQL_NO_DATA és ha az illesztőprogram SQLFetch visszaadta vagy SQLFetchScroll visszaadtaSQL_NO_DATASQLFetchScroll.A kurzor nyitva volt az Utasításkezelőn, de SQLFetchSQLFetchScroll nem lett meghívva. |
40001 |
Szerializálási hiba | A tranzakció egy erőforrás holtpontja miatt lett visszaállítva egy másik tranzakcióval. |
40003 |
Az utasítás befejezése ismeretlen | A társított kapcsolat a függvény végrehajtása során meghiúsult, és a tranzakció állapota nem határozható meg. |
HY000 |
Általános hiba | Hiba történt, amely miatt nem volt konkrét SQLSTATE , és amelynek implementációspecifikus SQLSTATE meghatározása nem történt meg. A *MessageText pufferben visszaadott SQLGetDiagRec hibaüzenet leírja a hibát és annak okát. |
HY001 |
Memóriafoglalási hiba | Az illesztőprogram nem tudta lefoglalni a függvény végrehajtásának vagy befejezésének támogatásához szükséges memóriát. |
HY008 |
Művelet megszakítva | Az aszinkron feldolgozás engedélyezve lett a StatementHandle-ben. A függvényt meghívták, és a végrehajtás befejezése előtt vagy SQLCancelSQLCancelHandle az Utasításkezelőben meghívták, majd ismét meghívták a függvényt az Utasításkezelőben.A függvény meghívása megtörtént, és a végrehajtás befejezése előtt, SQLCancel vagy SQLCancelHandle egy többszálas alkalmazás egy másik szálának Utasításkezelőjén lett meghívva. |
HY009 |
Érvénytelen null mutató használata | A TableName argumentum null mutató volt. Az SQL_ATTR_METADATA_ID utasítás attribútum SQL_TRUEértéke null, a CatalogName argumentum null értékű, az SQL_CATALOG_NAMEInfoType pedig azt adja vissza, hogy a katalógusnevek támogatottak.(DM) Az SQL_ATTR_METADATA_ID utasítás attribútum SQL_TRUEértéke , és a SchemaName argumentum null mutató volt. |
HY010 |
Függvényütemezési hiba | (DM) A StatementHandle-hez társított kapcsolati leíróhoz aszinkron módon végrehajtó függvény lett meghívva. Ez az aszinkron függvény továbbra is a függvény meghívásakor SQLStatistics lett végrehajtva.(DM) SQLExecute, SQLExecDirectvagy SQLMoreResults meghívták a StatementHandle-t , és visszaadták SQL_PARAM_DATA_AVAILABLE. Ez a függvény az összes streamelt paraméter adatainak lekérése előtt lett meghívva.(DM) Egy aszinkron módon végrehajtó függvény (nem ez) lett meghívva az StatementHandle-hez , és a függvény meghívásakor továbbra is végrehajtó volt. (DM) SQLExecute, SQLExecDirect, SQLBulkOperationsvagy SQLSetPos meghívták a StatementHandle-t , és visszaadták SQL_NEED_DATA. Ezt a függvényt az összes adatvégrehajtási paraméter vagy oszlop adatküldése előtt hívták meg. |
HY013 |
Memóriakezelési hiba | A függvényhívás nem dolgozható fel, mert a mögöttes memóriaobjektumok nem érhetők el, valószínűleg a memóriahiány miatt. |
HY090 |
Érvénytelen sztring vagy puffer hossza | (DM) A névhossz argumentumok egyikének értéke kisebb, mint 0, de nem egyenlő.SQL_NTSA névhossz argumentumok egyikének értéke túllépte a megfelelő név maximális hosszértékét. |
HY100 |
Az egyediség beállítástípusa kívül esik a tartományon | (DM) Érvénytelen egyedi érték van megadva. |
HY101 |
A pontossági beállítás típusa kívül esik a tartományon | (DM) Érvénytelen fenntartott érték lett megadva. |
HY117 |
A kapcsolat ismeretlen tranzakciós állapot miatt fel van függesztve. Csak a leválasztási és írásvédett függvények engedélyezettek. | (DM) A felfüggesztett állapotról további információt az SQLEndTran függvényben talál. |
HYC00 |
A választható funkció nem implementálva | Egy katalógus van megadva, és az illesztőprogram vagy az adatforrás nem támogatja a katalógusokat. Séma van megadva, és az illesztőprogram vagy az adatforrás nem támogatja a sémákat. Az illesztőprogram vagy SQL_ATTR_CURSOR_TYPE az adatforrás nem támogatja az és az SQL_ATTR_CONCURRENCY utasítás attribútumainak aktuális beállításainak kombinációját.Az SQL_ATTR_USE_BOOKMARKS utasítás attribútum SQL_UB_VARIABLEértéke , és az SQL_ATTR_CURSOR_TYPE utasítás attribútum olyan kurzortípusra lett beállítva, amelyhez az illesztőprogram nem támogatja a könyvjelzőket. |
HYT00 |
Az időtúllépés lejárt | A lekérdezés időtúllépési időtartama lejárt, mielőtt az adatforrás visszaadta a kért eredményhalmazt. Az időtúllépési időszak be van állítva a következőn: SQLSetStmtAttr. SQL_ATTR_QUERY_TIMEOUT |
HYT01 |
A kapcsolat időtúllépés miatt megszakadt | A kapcsolat időtúllépési időtartama lejárt, mielőtt az adatforrás válaszolt a kérésre. A kapcsolat időtúllépési időszaka a következőn van SQLSetConnectAttrbeállítva: . SQL_ATTR_CONNECTION_TIMEOUT |
IM001 |
Az illesztőprogram nem támogatja ezt a függvényt | (DM) Az StatementHandle-hez társított illesztőprogram nem támogatja a függvényt. |
IM017 |
A lekérdezés aszinkron értesítési módban le van tiltva | Az értesítési modell használata esetén a lekérdezés le van tiltva. |
IM018 |
SQLCompleteAsync nem lett meghívva, hogy végrehajtsa az előző aszinkron műveletet ezen a leírón. |
Ha a leíró előző függvényhívása SQL_STILL_EXECUTING visszatér, és ha az értesítési mód engedélyezve van, SQLCompleteAsync a leírón meg kell hívni az utófeldolgozáshoz és a művelet befejezéséhez. |
Comments
SQLStatistics Egyetlen táblára vonatkozó információkat ad vissza standard eredményhalmazként, rendezve NON_UNIQUE: , TYPE, INDEX_QUALIFIER, INDEX_NAMEés ORDINAL_POSITION. Az eredményhalmaz a tábla statisztikai adatait (az CARDINALITY eredményhalmaz oszlopaiban és PAGES oszlopaiban) egyesíti az egyes indexekre vonatkozó információkkal. Az információk felhasználási módjáról további információt a katalógusadatok felhasználási módjai című témakörben talál.
A , , TABLE_SCHEMTABLE_NAME, és COLUMN_NAME oszlopok tényleges hosszának TABLE_CATmeghatározásához az alkalmazás meghívhatja SQLGetInfo a SQL_MAX_CATALOG_NAME_LEN, SQL_MAX_SCHEMA_NAME_LEN, SQL_MAX_TABLE_NAME_LENés SQL_MAX_COLUMN_NAME_LEN a beállításokat.
Megjegyzés:
Az ODBC-katalógusfüggvények általános használatáról, argumentumairól és visszaadott adatairól további információt a Catalog Functions című témakörben talál.
A következő oszlopok átnevezve lettek az ODBC 3.x-re. Az oszlopnévváltozások nem befolyásolják a visszamenőleges kompatibilitást, mivel az alkalmazások oszlopszám alapján kötik össze az alkalmazásokat.
| ODBC 2.0 oszlop | ODBC 3.x oszlop |
|---|---|
TABLE_QUALIFIER |
TABLE_CAT |
TABLE_OWNER |
TABLE_SCHEM |
SEQ_IN_INDEX |
ORDINAL_POSITION |
COLLATION |
ASC_OR_DESC |
Az alábbi táblázat az eredményhalmaz oszlopait sorolja fel. A 13. oszlopon (FILTER_CONDITION) túl további oszlopokat is definiálhat az illesztő. Az alkalmazásnak hozzáférést kell szereznie az illesztőprogram-specifikus oszlopokhoz úgy, hogy az eredményhalmaz végétől lefelé számlál, nem pedig explicit sorrendi pozíciót ad meg. További információ: Catalog Functions által visszaadott adatok.
| Oszlop név | Oszlopszám | Adattípus | Comments |
|---|---|---|---|
TABLE_CAT (ODBC 1.0) |
1 | varchar | Annak a táblának a katalógusneve, amelyre a statisztika vagy az index vonatkozik; NULL ha nem alkalmazható az adatforrásra. Ha egy illesztőprogram egyes táblák katalógusait támogatja, mások számára azonban nem, például amikor az illesztőprogram adatokat kér le a különböző DBMS-ekből, üres sztringet ("") ad vissza azokhoz a táblákhoz, amelyek nem rendelkeznek katalógusokkal. |
TABLE_SCHEM (ODBC 1.0) |
2 | varchar | Annak a táblának a sémaneve, amelyre a statisztika vagy az index vonatkozik; NULL ha nem alkalmazható az adatforrásra. Ha egy illesztő bizonyos táblák sémáit támogatja, mások számára azonban nem, például amikor az illesztőprogram adatokat kér le különböző DBMS-ekből, üres sztringet ("") ad vissza a sémákkal nem rendelkező táblákhoz. |
TABLE_NAME (ODBC 1.0) |
3 |
varchar not NULL |
Annak a táblának a neve, amelyre a statisztika vagy az index vonatkozik. |
NON_UNIQUE (ODBC 1.0) |
4 | smallint | Azt jelzi, hogy az index nem engedélyezi-e a duplikált értékeket:SQL_TRUE ha az indexértékek nem lehetnek egybeesnek.SQL_FALSE ha az index értékeinek egyedinek kell lenniük.NULL akkor lesz visszaadva, ha TYPE az SQL_TABLE_STAT. |
INDEX_QUALIFIER (ODBC 1.0) |
5 | varchar | Az index nevének DROP INDEXNULL minősítéséhez használt azonosító ; akkor lesz visszaadva, ha az adatforrás nem támogatja az index-minősítőt, vagy ha TYPE igenSQL_TABLE_STAT. Ha ebben az oszlopban nem null értékű értéket ad vissza, akkor azt kell használni az indexnév egy utasításon DROP INDEX való minősítéséhez; ellenkező esetben az TABLE_SCHEM indexnév minősítéséhez kell használni. |
INDEX_NAME (ODBC 1.0) |
6 | varchar | Index neve; NULL akkor lesz visszaadva, ha TYPE az SQL_TABLE_STAT. |
TYPE (ODBC 1.0) |
7 |
smallint not NULL |
A visszaadott információ típusa:SQL_TABLE_STATa tábla (vagy PAGES oszlop) statisztikáját CARDINALITY jelzi.SQL_INDEX_BTREE B-Fa indexet jelöl.SQL_INDEX_CLUSTERED fürtözött indexet jelöl.SQL_INDEX_CONTENT tartalomindexet jelez.SQL_INDEX_HASHED kivonatolt indexet jelöl.SQL_INDEX_OTHER egy másik indextípust jelöl. |
ORDINAL_POSITION (ODBC 1.0) |
8 | smallint | Oszlopütemezési szám az indexben (1-től kezdve); NULL akkor lesz visszaadva, ha TYPE az SQL_TABLE_STAT. |
COLUMN_NAME (ODBC 1.0) |
9 | varchar | Oszlop neve. Ha az oszlop egy kifejezésen alapul, például SALARY + BENEFITSa kifejezést adja vissza; ha a kifejezés nem határozható meg, egy üres sztring lesz visszaadva.
NULL akkor lesz visszaadva, ha TYPE az SQL_TABLE_STAT. |
ASC_OR_DESC (ODBC 1.0) |
10 | char(1) | Az oszlop rendezési sorrendje: "A" növekvő; "D" csökkenő; NULL akkor lesz visszaadva, ha az adatforrás nem támogatja az oszloprendezési sorozatot, vagy ha TYPE igen SQL_TABLE_STAT. |
CARDINALITY (ODBC 1.0) |
11 | egész szám | A tábla vagy index számossága; a tábla sorainak száma, ha TYPE van SQL_TABLE_STAT; az indexben lévő egyedi értékek száma, ha TYPE nem SQL_TABLE_STAT; NULL akkor lesz visszaadva, ha az érték nem érhető el az adatforrásból. |
PAGES (ODBC 1.0) |
12 | egész szám | Az index vagy táblázat tárolására használt lapok száma; a tábla lapjainak száma, ha TYPE van SQL_TABLE_STAT; az index lapjainak száma, ha TYPE nem SQL_TABLE_STAT; NULL akkor lesz visszaadva, ha az érték nem érhető el az adatforrásból, vagy ha nem alkalmazható az adatforrásra. |
FILTER_CONDITION (ODBC 2.0) |
13 | varchar | Ha az index szűrt index, akkor ez a szűrőfeltétel, például SALARY > 30000ha a szűrőfeltétel nem határozható meg, akkor ez egy üres sztring.NULL ha az index nem szűrt index, akkor nem állapítható meg, hogy az index szűrt index-e, vagy TYPE az SQL_TABLE_STAT. |
Ha az eredményhalmaz sora egy táblának felel meg, az illesztő beállítja és beállítja TYPENON_UNIQUESQL_TABLE_STAT a , INDEX_QUALIFIER, INDEX_NAME, ORDINAL_POSITION, COLUMN_NAMEés ASC_OR_DESC a következőt.NULL
PAGES Ha CARDINALITY az adatforrásból nem érhető el, az illesztőprogram a következőre NULLállítja őket: .
Kódrészlet
Egy hasonló függvény kód példájáért lásd az SQLColumns függvényt.
Kapcsolódó függvények
| Információ erről: | Cikk |
|---|---|
| Puffer kötése egy eredményhalmaz oszlopához | SQLBindCol függvény |
| Utasításfeldolgozás megszakítása | SQLCancel függvény |
| Egyetlen sor vagy adatblokk beolvasása csak előre irányban. | SQLFetch függvény |
| Adatblokk beolvasása vagy egy eredményhalmaz görgetése | SQLFetchScroll függvény |
| Idegen kulcsok oszlopainak visszaadása | SQLForeignKeys függvény |
| Elsődleges kulcs oszlopainak visszaadása | SQLPrimaryKeys függvény |