Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
SQLStatistics haalt een lijst met statistieken op over één tabel en de indexen die aan de tabel zijn gekoppeld. Het stuurprogramma retourneert de informatie als resultaatset.
Conformiteit
Versie geïntroduceerd: NALEVING van ODBC 1.0-standaarden: ISO 92
Syntaxis
SQLRETURN SQLStatistics(
SQLHSTMT StatementHandle ,
SQLCHAR * CatalogName ,
SQLSMALLINT NameLength1 ,
SQLCHAR * SchemaName ,
SQLSMALLINT NameLength2 ,
SQLCHAR * TableName ,
SQLSMALLINT NameLength3 ,
SQLUSMALLINT Unique ,
SQLUSMALLINT Reserved);
Arguments
StatementHandle
[Invoer] Instructiehandgreep.
CatalogName
[Invoer] Catalogusnaam. Als een stuurprogramma catalogi voor sommige tabellen ondersteunt, maar niet voor andere tabellen, zoals wanneer het stuurprogramma gegevens ophaalt uit verschillende DBMS's, geeft een lege tekenreeks ("") aan dat deze tabellen geen catalogi hebben.
CatalogName kan geen tekenreekszoekpatroon bevatten.
Als het SQL_ATTR_METADATA_ID instructiekenmerk is ingesteld op SQL_TRUE, wordt CatalogName behandeld als een id en is de case niet significant. Als dit het geval SQL_FALSEis, is CatalogName een gewoon argument. Het wordt letterlijk behandeld en het geval is significant. Zie Argumenten in Catalogusfuncties voor meer informatie.
NameLength1
[Invoer] Lengte in tekens van CatalogName.
Schemanaam
[Invoer] Schemanaam. Als een stuurprogramma schema's ondersteunt voor sommige tabellen, maar niet voor andere, zoals wanneer het stuurprogramma gegevens ophaalt uit verschillende DBMS's, geeft een lege tekenreeks ("") aan dat deze tabellen geen schema's hebben.
SchemaName kan geen tekenreekszoekpatroon bevatten.
Als het SQL_ATTR_METADATA_ID instructiekenmerk is ingesteld op SQL_TRUE, wordt SchemaName behandeld als een id en is de case niet significant. Als dit het geval SQL_FALSEis, is SchemaName een gewoon argument; het wordt letterlijk behandeld en de case is belangrijk.
NameLength2
[Invoer] Lengte in tekens van SchemaName.
TableName
[Invoer] Tabelnaam. Dit argument kan geen null-aanwijzer zijn. TableName kan geen tekenreekszoekpatroon bevatten.
Als het SQL_ATTR_METADATA_ID instructiekenmerk is ingesteld op SQL_TRUE, wordt TableName behandeld als een id en is de case niet significant. Als dit het geval SQL_FALSEis, is TableName een gewoon argument; het wordt letterlijk behandeld en het hoofdlettergebruik is belangrijk.
NameLength3
[Invoer] Lengte in tekens van TableName.
Uniek
[Invoer] Type index: SQL_INDEX_UNIQUE of SQL_INDEX_ALL.
Gereserveerd
[Invoer] Geeft het belang van de CARDINALITY en PAGES kolommen in de resultatenset aan. De volgende opties zijn alleen van invloed op het retourneren van de CARDINALITY en PAGES kolommen; indexinformatie wordt geretourneerd, zelfs als CARDINALITY deze PAGES niet worden geretourneerd.
SQL_ENSURE verzoekt de bestuurder de statistieken voorwaardelijke op te halen. (Stuurprogramma's die alleen voldoen aan de Open Group-standaard en geen ondersteuning bieden voor ODBC-extensies, kunnen geen ondersteuning bieden SQL_ENSURE.)
SQL_QUICK vraagt dat het stuurprogramma de CARDINALITY en PAGES alleen als deze direct beschikbaar zijn op de server. In dit geval zorgt de driver er niet voor dat de waarden actueel zijn. (Toepassingen die naar de Open Group-standaard zijn geschreven, krijgen SQL_QUICK altijd gedrag van ODBC 3.x-compatibele stuurprogramma's.)
Retouren
SQL_SUCCESS, , SQL_SUCCESS_WITH_INFOSQL_STILL_EXECUTING, , SQL_ERRORof SQL_INVALID_HANDLE.
Diagnostics
Bij SQLStatistics retourneert SQL_ERROR of SQL_SUCCESS_WITH_INFOkan een gekoppelde SQLSTATE waarde worden verkregen door aan te roepen SQLGetDiagRec met een HandleType van SQL_HANDLE_STMT en een Handle of StatementHandle. De volgende tabel bevat de SQLSTATE waarden die doorgaans worden geretourneerd door SQLStatistics en legt elke waarden uit in de context van deze functie. De notatie (DM) gaat vooraf aan de beschrijvingen van elke SQLSTATE waarde die door Driver Manager wordt geretourneerd. De retourcode die aan elke SQLSTATE waarde is gekoppeld, is SQL_ERROR, tenzij anders vermeld.
| SQLSTATE | Fout | Description |
|---|---|---|
01000 |
Algemene waarschuwing | Stuurprogrammaspecifiek informatiebericht. (Functie retourneert SQL_SUCCESS_WITH_INFO.) |
08S01 |
Communicatiekoppelingsfout | De communicatiekoppeling tussen het stuurprogramma en de gegevensbron waarmee het stuurprogramma is verbonden, is mislukt voordat de verwerking van de functie is voltooid. |
24000 |
Ongeldige cursorstatus | Er is een cursor geopend op de StatementHandle en SQLFetch of SQLFetchScroll is aangeroepen. Deze fout wordt geretourneerd door Driver Manager als SQLFetch of SQLFetchScroll niet is geretourneerd SQL_NO_DATA en wordt geretourneerd door het stuurprogramma als SQLFetch of SQLFetchScroll is geretourneerd SQL_NO_DATA.Er is een cursor geopend op de StatementHandle, maar SQLFetch of SQLFetchScroll deze is niet aangeroepen. |
40001 |
Serialisatiefout | De transactie is teruggedraaid vanwege een resource-impasse met een andere transactie. |
40003 |
Voltooiing van instructie onbekend | De gekoppelde verbinding is mislukt tijdens de uitvoering van deze functie en de status van de transactie kan niet worden bepaald. |
HY000 |
Algemene fout | Er is een fout opgetreden waarvoor geen specifiek en waarvoor geen implementatiespecifiek SQLSTATESQLSTATE is gedefinieerd. Het foutbericht dat in SQLGetDiagRec de *MessageText-buffer wordt geretourneerd, beschrijft de fout en de oorzaak ervan. |
HY001 |
Fout bij geheugentoewijzing | Het stuurprogramma kan geen geheugen toewijzen dat vereist is om de uitvoering of voltooiing van de functie te ondersteunen. |
HY008 |
Bewerking geannuleerd | Asynchrone verwerking is ingeschakeld voor de StatementHandle. De functie is aangeroepen en voordat de uitvoering is voltooid, SQLCancel of SQLCancelHandle werd aangeroepen op de StatementHandle, en vervolgens werd de functie opnieuw aangeroepen op de StatementHandle.De functie is aangeroepen en voordat deze is voltooid, SQLCancel of SQLCancelHandle werd aangeroepen op de StatementHandle vanuit een andere thread in een multithread-toepassing. |
HY009 |
Ongeldig gebruik van null-aanwijzer | Het argument TableName was een null-aanwijzer. Het SQL_ATTR_METADATA_ID instructiekenmerk is ingesteld op SQL_TRUE, het argument CatalogName was een null-aanwijzer en het SQL_CATALOG_NAMEInfoType retourneert dat catalogusnamen worden ondersteund.(DM) Het SQL_ATTR_METADATA_ID instructiekenmerk is ingesteld op SQL_TRUEen het argument SchemaName was een null-aanwijzer. |
HY010 |
Fout in functiereeks | (DM) Er is een asynchroon uitgevoerde functie aangeroepen voor de verbindingsgreep die is gekoppeld aan de StatementHandle. Deze asynchrone functie werd nog steeds uitgevoerd toen de SQLStatistics functie werd aangeroepen.(DM) SQLExecute, SQLExecDirectof SQLMoreResults werd aangeroepen voor de StatementHandle en geretourneerd SQL_PARAM_DATA_AVAILABLE. Deze functie is aangeroepen voordat gegevens zijn opgehaald voor alle gestreamde parameters.(DM) Er is een asynchroon uitgevoerde functie (niet deze) aangeroepen voor de StatementHandle en werd nog steeds uitgevoerd toen deze functie werd aangeroepen. (DM) SQLExecute, SQLExecDirect, of SQLBulkOperationsSQLSetPos werd aangeroepen voor de StatementHandle en geretourneerd SQL_NEED_DATA. Deze functie is aangeroepen voordat gegevens werden verzonden voor alle parameters of kolommen voor uitvoering van gegevens. |
HY013 |
Fout bij geheugenbeheer | De functie-aanroep kan niet worden verwerkt omdat de onderliggende geheugenobjecten niet kunnen worden geopend, mogelijk vanwege onvoldoende geheugen. |
HY090 |
Ongeldige tekenreeks- of bufferlengte | (DM) De waarde van een van de argumenten voor de naamlengte was kleiner dan 0, maar niet gelijk aan SQL_NTS.De waarde van een van de argumenten voor de lengte van de naam heeft de maximumlengtewaarde voor de bijbehorende naam overschreden. |
HY100 |
Type uniekheidsoptie buiten bereik | (DM) Er is een ongeldige unieke waarde opgegeven. |
HY101 |
Type nauwkeurigheidsoptie buiten bereik | (DM) Er is een ongeldige gereserveerde waarde opgegeven. |
HY117 |
De verbinding is onderbroken vanwege een onbekende transactiestatus. Alleen de verbinding verbreken en alleen-lezenfuncties zijn toegestaan. | (DM) Zie SQLEndTran Function voor meer informatie over de onderbroken status. |
HYC00 |
Optionele functie niet geïmplementeerd | Er is een catalogus opgegeven en het stuurprogramma of de gegevensbron biedt geen ondersteuning voor catalogi. Er is een schema opgegeven en het stuurprogramma of de gegevensbron biedt geen ondersteuning voor schema's. De combinatie van de huidige instellingen van de SQL_ATTR_CONCURRENCY kenmerken en SQL_ATTR_CURSOR_TYPE instructies wordt niet ondersteund door het stuurprogramma of de gegevensbron.Het SQL_ATTR_USE_BOOKMARKS instructiekenmerk is ingesteld op SQL_UB_VARIABLEen het SQL_ATTR_CURSOR_TYPE instructiekenmerk is ingesteld op een cursortype waarvoor het stuurprogramma geen bladwijzers ondersteunt. |
HYT00 |
Time-out verlopen | De time-outperiode van de query is verlopen voordat de gegevensbron de aangevraagde resultatenset heeft geretourneerd. De time-outperiode wordt ingesteld via SQLSetStmtAttr, SQL_ATTR_QUERY_TIMEOUT. |
HYT01 |
Time-out voor de verbinding is overschreden | De time-outperiode voor de verbinding is verlopen voordat de gegevensbron op de aanvraag heeft gereageerd. De time-outperiode voor de verbinding wordt ingesteld via SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT. |
IM001 |
Stuurprogramma biedt geen ondersteuning voor deze functie | (DM) Het stuurprogramma dat is gekoppeld aan de StatementHandle biedt geen ondersteuning voor de functie. |
IM017 |
Polling is uitgeschakeld in de asynchrone meldingsmodus | Wanneer het meldingsmodel wordt gebruikt, wordt polling uitgeschakeld. |
IM018 |
SQLCompleteAsync is niet aangeroepen om de vorige asynchrone bewerking op deze ingang te voltooien. |
Als de vorige functie-aanroep op de ingang retourneert en als de meldingsmodus SQL_STILL_EXECUTING is ingeschakeld, SQLCompleteAsync moet u worden aangeroepen op de ingang om de bewerking na verwerking uit te voeren en de bewerking te voltooien. |
Comments
SQLStatistics retourneert informatie over één tabel als een standaardresultatenset, gesorteerd op NON_UNIQUE, TYPE, INDEX_QUALIFIER, INDEX_NAMEen ORDINAL_POSITION. De resultatenset combineert statistiekengegevens (in de CARDINALITY kolommen PAGES van de resultatenset) voor de tabel met informatie over elke index. Zie Gebruik van catalogusgegevens voor informatie over hoe deze informatie kan worden gebruikt.
Een toepassing kan worden aangeroepen SQLGetInfo met de SQL_MAX_CATALOG_NAME_LEN, SQL_MAX_SCHEMA_NAME_LENSQL_MAX_COLUMN_NAME_LENSQL_MAX_TABLE_NAME_LENen de opties om de werkelijke lengte van de TABLE_CAT, TABLE_SCHEMen TABLE_NAMECOLUMN_NAME kolommen te bepalen.
Opmerking
Zie Catalogusfuncties voor meer informatie over het algemene gebruik, argumenten en geretourneerde gegevens van ODBC-catalogusfuncties.
De naam van de volgende kolommen is gewijzigd voor ODBC 3.x. De kolomnaamwijzigingen zijn niet van invloed op compatibiliteit met eerdere versies omdat toepassingen binden op kolomnummer.
| ODBC 2.0-kolom | ODBC 3.x-kolom |
|---|---|
TABLE_QUALIFIER |
TABLE_CAT |
TABLE_OWNER |
TABLE_SCHEM |
SEQ_IN_INDEX |
ORDINAL_POSITION |
COLLATION |
ASC_OR_DESC |
De volgende tabel bevat de kolommen in de resultatenset. Extra kolommen buiten kolom 13 (FILTER_CONDITION) kunnen worden gedefinieerd door het stuurprogramma. Een toepassing moet toegang krijgen tot stuurprogrammaspecifieke kolommen door af te tellen vanaf het einde van de resultatenset in plaats van een expliciete rangschikkingspositie op te geven. Zie Gegevens geretourneerd door Catalogusfuncties voor meer informatie.
| Kolomnaam | Kolomnummer | Gegevenstype | Comments |
|---|---|---|---|
TABLE_CAT (ODBC 1.0) |
1 | varchar | Catalogusnaam van de tabel waarop de statistiek of index van toepassing is; NULL indien niet van toepassing op de gegevensbron. Als een stuurprogramma catalogi voor sommige tabellen ondersteunt, maar niet voor andere tabellen, bijvoorbeeld wanneer het stuurprogramma gegevens ophaalt uit verschillende DBMS's, retourneert het een lege tekenreeks ("") voor die tabellen die geen catalogi hebben. |
TABLE_SCHEM (ODBC 1.0) |
2 | varchar | Schemanaam van de tabel waarop de statistiek of index van toepassing is; NULL indien niet van toepassing op de gegevensbron. Als een stuurprogramma schema's voor sommige tabellen ondersteunt, maar niet voor andere tabellen, zoals wanneer het stuurprogramma gegevens ophaalt uit verschillende DBMS's, retourneert het een lege tekenreeks ("") voor die tabellen die geen schema's hebben. |
TABLE_NAME (ODBC 1.0) |
3 |
varchar niet NULL |
Tabelnaam van de tabel waarop de statistiek of index van toepassing is. |
NON_UNIQUE (ODBC 1.0) |
4 | smallint | Geeft aan of de index geen dubbele waarden toestaat:SQL_TRUE als de indexwaarden niet-zelfstandig kunnen zijn.SQL_FALSE als de indexwaarden uniek moeten zijn.NULL wordt geretourneerd als TYPE dit is SQL_TABLE_STAT. |
INDEX_QUALIFIER (ODBC 1.0) |
5 | varchar | De id die wordt gebruikt om de indexnaam in aanmerking te laten komen, wordt DROP INDEXNULL geretourneerd als een indexkwalificatie niet wordt ondersteund door de gegevensbron of als TYPE dat het isSQL_TABLE_STAT. Als een niet-null-waarde wordt geretourneerd in deze kolom, moet deze worden gebruikt om de indexnaam op een DROP INDEX instructie te kwalificeren. Anders moet de TABLE_SCHEM waarde worden gebruikt om de indexnaam te kwalificeren. |
INDEX_NAME (ODBC 1.0) |
6 | varchar | Indexnaam; NULL wordt geretourneerd als TYPE dit is SQL_TABLE_STAT. |
TYPE (ODBC 1.0) |
7 |
kleineint niet NULL |
Type informatie dat wordt geretourneerd:SQL_TABLE_STAT geeft een statistiek aan voor de tabel (in de CARDINALITY of PAGES kolom).SQL_INDEX_BTREE geeft een B-Tree-index aan.SQL_INDEX_CLUSTERED geeft een geclusterde index aan.SQL_INDEX_CONTENT geeft een inhoudsindex aan.SQL_INDEX_HASHED geeft een hash-index aan.SQL_INDEX_OTHER geeft een ander type index aan. |
ORDINAL_POSITION (ODBC 1.0) |
8 | smallint | Kolomreeksnummer in index (beginnend met 1); NULL wordt geretourneerd als TYPE dit is SQL_TABLE_STAT. |
COLUMN_NAME (ODBC 1.0) |
9 | varchar | Kolomnaam. Als de kolom is gebaseerd op een expressie, zoals SALARY + BENEFITS, wordt de expressie geretourneerd. Als de expressie niet kan worden bepaald, wordt een lege tekenreeks geretourneerd.
NULL wordt geretourneerd als TYPE dit is SQL_TABLE_STAT. |
ASC_OR_DESC (ODBC 1.0) |
10 | char(1) | Sorteervolgorde voor de kolom: "A" voor oplopend; "D" voor aflopend; NULL wordt geretourneerd als de sorteervolgorde van kolommen niet wordt ondersteund door de gegevensbron of als TYPE dat het is SQL_TABLE_STAT. |
CARDINALITY (ODBC 1.0) |
11 | geheel getal | Kardinaliteit van tabel of index; het aantal rijen in de tabel als TYPE dit is SQL_TABLE_STAT; het aantal unieke waarden in de index als TYPE dat niet SQL_TABLE_STAThet is, NULL wordt geretourneerd als de waarde niet beschikbaar is in de gegevensbron. |
PAGES (ODBC 1.0) |
12 | geheel getal | Aantal pagina's dat wordt gebruikt voor het opslaan van de index of tabel; aantal pagina's voor de tabel als TYPE dat het geval is SQL_TABLE_STAT; aantal pagina's voor de index als TYPE dat niet SQL_TABLE_STAThet geval is, NULL wordt geretourneerd als de waarde niet beschikbaar is in de gegevensbron of als deze niet van toepassing is op de gegevensbron. |
FILTER_CONDITION (ODBC 2.0) |
13 | varchar | Als de index een gefilterde index is, is dit de filtervoorwaarde, zoals SALARY > 30000; als de filtervoorwaarde niet kan worden bepaald, is dit een lege tekenreeks.NULL als de index geen gefilterde index is, kan deze niet worden bepaald of de index een gefilterde index is of TYPE is SQL_TABLE_STAT. |
Als de rij in de resultatenset overeenkomt met een tabel, wordt het stuurprogramma ingesteld SQL_TABLE_STAT op en ingesteld NON_UNIQUEop , INDEX_QUALIFIER, INDEX_NAME, ORDINAL_POSITION, en COLUMN_NAMEASC_OR_DESC op NULL.TYPE Als CARDINALITY of PAGES niet beschikbaar zijn vanuit de gegevensbron, stelt het stuurprogramma deze in op NULL.
Voorbeeld van code
Zie SQLColumns Function voor een codevoorbeeld van een vergelijkbare functie.
Gerelateerde functies
| Voor informatie over | Article |
|---|---|
| Een buffer koppelen aan een kolom in een resultatenset | SQLBindCol, functie |
| Verwerking van instructie annuleren | SQLCancel, functie |
| Eén rij of een blok gegevens ophalen in een richting met alleen-doorsturen. | SQLFetch, functie |
| Een gegevensblok ophalen of door een resultatenset schuiven | SQLFetchScroll, functie |
| De kolommen met refererende sleutels retourneren | SQLForeignKeys, functie |
| De kolommen van een primaire sleutel retourneren | SQLPrimaryKeys, functie |