Megosztás:


SQLStatistics függvény

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_NTS

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

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