Delen via


SQLStatistics, functie

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.

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