Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
SQLStatistics hämtar en lista med statistik om en enskild tabell och indexen som är associerade med tabellen. Drivrutinen returnerar informationen som en resultatuppsättning.
Överensstämmelse
Version introducerad: ODBC 1.0 Standardefterlevnad: ISO 92
Syntax
SQLRETURN SQLStatistics(
SQLHSTMT StatementHandle ,
SQLCHAR * CatalogName ,
SQLSMALLINT NameLength1 ,
SQLCHAR * SchemaName ,
SQLSMALLINT NameLength2 ,
SQLCHAR * TableName ,
SQLSMALLINT NameLength3 ,
SQLUSMALLINT Unique ,
SQLUSMALLINT Reserved);
Arguments
StatementHandle
[Indata] Instruktionshandtag.
CatalogName
[Indata] Katalognamn. Om en drivrutin stöder kataloger för vissa tabeller men inte för andra, till exempel när drivrutinen hämtar data från olika DBMS,, anger en tom sträng ("") de tabeller som inte har kataloger.
CatalogName får inte innehålla ett mönster för strängsökning.
Om instruktionsattributet SQL_ATTR_METADATA_ID är inställt på SQL_TRUEbehandlas CatalogName som en identifierare och dess skiftläge är inte betydande. Om det är SQL_FALSEär CatalogName ett vanligt argument. Det behandlas bokstavligen och dess fall är betydande. Mer information finns i Argument i Katalogfunktioner.
NameLength1
[Indata] Längd i tecken i CatalogName.
Schema-namn
[Indata] Schemanamn. Om en drivrutin stöder scheman för vissa tabeller men inte för andra, till exempel när drivrutinen hämtar data från olika DBMS,, anger en tom sträng ("") de tabeller som inte har scheman.
SchemaName får inte innehålla ett strängsökningsmönster.
Om instruktionsattributet SQL_ATTR_METADATA_ID är inställt på SQL_TRUEbehandlas SchemaName som en identifierare och dess skiftläge är inte betydande. Om det är SQL_FALSEär SchemaName ett vanligt argument. Det behandlas bokstavligen och dess fall är betydande.
NameLength2
[Indata] Längd i tecken i SchemaName.
TableName
[Indata] Tabellnamn. Det här argumentet kan inte vara en null-pekare. TableName får inte innehålla ett strängsökningsmönster.
Om instruktionsattributet SQL_ATTR_METADATA_ID är inställt på SQL_TRUEbehandlas TableName som en identifierare och dess skiftläge är inte betydande. Om det är SQL_FALSEär TableName ett vanligt argument. Det behandlas bokstavligen och dess fall är betydande.
NameLength3
[Indata] Längd i tecken i TableName.
Unik
[Indata] Typ av index: SQL_INDEX_UNIQUE eller SQL_INDEX_ALL.
Reserverad
[Indata] Anger vikten av kolumnerna CARDINALITY och PAGES i resultatuppsättningen. Följande alternativ påverkar endast returen av kolumnerna CARDINALITY och PAGES . Indexinformation returneras även om CARDINALITY och PAGES inte returneras.
SQL_ENSURE begär att drivrutinen villkorslöst hämtar statistiken. (Drivrutiner som endast överensstämmer med open group-standarden och inte stöder ODBC-tillägg kommer inte att kunna stödja SQL_ENSURE.)
SQL_QUICK begär att drivrutinen hämtar CARDINALITY och PAGES endast om de är lättillgängliga från servern. I det här fallet säkerställer inte drivrutinen att värdena är aktuella. (Program som skrivs till open group-standarden får SQL_QUICK alltid beteende från ODBC 3.x-kompatibla drivrutiner.)
Retur
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_ERROReller SQL_INVALID_HANDLE.
Diagnostik
När SQLStatistics returnerar SQL_ERROR eller SQL_SUCCESS_WITH_INFOkan ett associerat SQLSTATE värde hämtas genom att anropa SQLGetDiagRec med en HandleType av SQL_HANDLE_STMT och ett handtag för StatementHandle. I följande tabell visas de SQLSTATE värden som vanligtvis returneras av SQLStatistics och förklarar var och en i kontexten för den här funktionen. Notationen (DM) föregår beskrivningarna av varje SQLSTATE som returneras av drivrutinshanteraren. Returkoden som är associerad med varje SQLSTATE värde är SQL_ERROR, om inget annat anges.
| SQLSTATE | Error | Description |
|---|---|---|
01000 |
Allmän varning | Informationsmeddelande för drivrutinsspecifikt. (Funktionen returnerar SQL_SUCCESS_WITH_INFO.) |
08S01 |
Kommunikationslänkfel | Kommunikationslänken mellan drivrutinen och datakällan som drivrutinen var ansluten till misslyckades innan funktionen slutförde bearbetningen. |
24000 |
Ogiltigt markörtillstånd | En markör var öppen på StatementHandle och SQLFetch eller SQLFetchScroll hade anropats. Det här felet returneras av drivrutinshanteraren om SQLFetch eller SQLFetchScroll inte har returnerats SQL_NO_DATA och returneras av drivrutinen om SQLFetch eller SQLFetchScroll har returnerat SQL_NO_DATA.En markör var öppen på StatementHandle, men SQLFetch eller SQLFetchScroll hade inte anropats. |
40001 |
Serialiseringsfel | Transaktionen återställdes på grund av ett resursstopp med en annan transaktion. |
40003 |
Slutförande av instruktion okänd | Den associerade anslutningen misslyckades under körningen av den här funktionen och transaktionens tillstånd kan inte fastställas. |
HY000 |
Allmänt fel | Ett fel uppstod för vilket det inte fanns någon specifik SQLSTATE och för vilken ingen implementeringsspecifik SQLSTATE definierades. Felmeddelandet som returneras av SQLGetDiagRec i *MessageText-bufferten beskriver felet och dess orsak. |
HY001 |
Fel vid minnesallokering | Drivrutinen kunde inte allokera minne som krävs för att stödja körning eller slutförande av funktionen. |
HY008 |
Åtgärden avbröts | Asynkron bearbetning aktiverades för StatementHandle. Funktionen anropades och innan den slutförde körningen, SQLCancel eller SQLCancelHandle anropades på StatementHandle, och sedan anropades funktionen igen på StatementHandle.Funktionen anropades och innan den slutförde körningen, SQLCancel eller SQLCancelHandle anropades på StatementHandle från en annan tråd i ett flertrådsprogram. |
HY009 |
Ogiltig användning av null-pekare |
Argumentet TableName var en null-pekare. Instruktionsattributet SQL_ATTR_METADATA_ID har angetts till SQL_TRUE, argumentet CatalogName var en null-pekare och SQL_CATALOG_NAMEInfoType returnerar att katalognamn stöds.(DM) Instruktionsattributet SQL_ATTR_METADATA_ID var inställt på SQL_TRUE, och argumentet SchemaName var en null-pekare. |
HY010 |
Funktionssekvensfel | (DM) En asynkront körande funktion anropades för anslutningshandtaget som är associerat med StatementHandle. Den här asynkrona funktionen kördes fortfarande när SQLStatistics funktionen anropades.(DM) SQLExecute, SQLExecDirect, eller SQLMoreResults anropades för StatementHandle och returnerade .SQL_PARAM_DATA_AVAILABLE Den här funktionen anropades innan data hämtades för alla strömmade parametrar.(DM) En asynkront körande funktion (inte den här) anropades för StatementHandle och kördes fortfarande när den här funktionen anropades. (DM) SQLExecute, SQLExecDirect, SQLBulkOperationseller SQLSetPos anropades för StatementHandle och returnerade SQL_NEED_DATA. Den här funktionen anropades innan data skickades för alla data-at-execution-parametrar eller kolumner. |
HY013 |
Minneshanteringsfel | Det gick inte att bearbeta funktionsanropet eftersom det inte gick att komma åt underliggande minnesobjekt, möjligen på grund av minnesbrist. |
HY090 |
Ogiltig sträng- eller buffertlängd | (DM) Värdet för ett av argumenten för namnlängd var mindre än 0 men inte lika med SQL_NTS.Värdet för ett av argumenten för namnlängd överskred det maximala längdvärdet för motsvarande namn. |
HY100 |
Unikhetsalternativet är inte inom intervallet | (DM) Ett ogiltigt unikt värde har angetts. |
HY101 |
Precisionsalternativet är inte inom intervallet | (DM) Ett ogiltigt reserverat värde har angetts. |
HY117 |
Anslutningen pausas på grund av okänt transaktionstillstånd. Endast frånkopplings- och skrivskyddade funktioner tillåts. | (DM) Mer information om pausat tillstånd finns i SQLEndTran-funktion. |
HYC00 |
Valfri funktion har inte implementerats | En katalog har angetts och drivrutinen eller datakällan stöder inte kataloger. Ett schema har angetts och drivrutinen eller datakällan stöder inte scheman. Kombinationen av de aktuella inställningarna för SQL_ATTR_CONCURRENCY - och SQL_ATTR_CURSOR_TYPE -instruktionsattributen stöddes inte av drivrutinen eller datakällan.Instruktionsattributet SQL_ATTR_USE_BOOKMARKS har angetts till SQL_UB_VARIABLE, och instruktionsattributet SQL_ATTR_CURSOR_TYPE har angetts till en markörtyp som drivrutinen inte stöder bokmärken för. |
HYT00 |
Tidsgränsen har upphört att gälla | Tidsgränsen för frågan löpte ut innan datakällan returnerade den begärda resultatuppsättningen. Tidsgränsen anges via SQLSetStmtAttr, SQL_ATTR_QUERY_TIMEOUT. |
HYT01 |
Tidsgränsen för anslutningen gick ut | Tidsgränsen för anslutningen löpte ut innan datakällan svarade på begäran. Tidsgränsen för anslutningen anges via SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT. |
IM001 |
Drivrutinen stöder inte den här funktionen | (DM) Drivrutinen som är associerad med StatementHandle stöder inte funktionen. |
IM017 |
Avsökning är inaktiverat i asynkront meddelandeläge | När meddelandemodellen används inaktiveras avsökningen. |
IM018 |
SQLCompleteAsync har inte anropats för att slutföra den tidigare asynkrona åtgärden på det här handtaget. |
Om det tidigare funktionsanropet på handtaget returnerar SQL_STILL_EXECUTING och om meddelandeläget är aktiverat SQLCompleteAsync måste anropas på handtaget för att utföra efterbearbetningen och slutföra åtgärden. |
Comments
SQLStatistics returnerar information om en enskild tabell som en standardresultatuppsättning, sorterad efter NON_UNIQUE, TYPE, INDEX_QUALIFIER, INDEX_NAMEoch ORDINAL_POSITION. Resultatuppsättningen kombinerar statistikinformation (i resultatuppsättningens CARDINALITY kolumner och PAGES ) för tabellen med information om varje index. Information om hur den här informationen kan användas finns i Användning av katalogdata.
För att fastställa de faktiska längderna för kolumnerna , , och kan ett program anropa SQLGetInfo med SQL_MAX_CATALOG_NAME_LENalternativen , SQL_MAX_SCHEMA_NAME_LEN, SQL_MAX_TABLE_NAME_LENoch SQL_MAX_COLUMN_NAME_LEN .COLUMN_NAMETABLE_NAMETABLE_SCHEMTABLE_CAT
Anmärkning
Mer information om allmän användning, argument och returnerade data för ODBC-katalogfunktioner finns i Katalogfunktioner.
Följande kolumner har bytt namn för ODBC 3.x. Kolumnnamnändringarna påverkar inte bakåtkompatibiliteten eftersom program binder efter kolumnnummer.
| ODBC 2.0-kolumn | ODBC 3.x-kolumn |
|---|---|
TABLE_QUALIFIER |
TABLE_CAT |
TABLE_OWNER |
TABLE_SCHEM |
SEQ_IN_INDEX |
ORDINAL_POSITION |
COLLATION |
ASC_OR_DESC |
I följande tabell visas kolumnerna i resultatuppsättningen. Ytterligare kolumner utöver kolumn 13 (FILTER_CONDITION) kan definieras av drivrutinen. Ett program bör få åtkomst till drivrutinsspecifika kolumner genom att räkna ned från slutet av resultatuppsättningen i stället för att ange en explicit ordningstalsposition. Mer information finns i Data som returneras av katalogfunktioner.
| Kolumnnamn | Kolumnnummer | Datatyp | Comments |
|---|---|---|---|
TABLE_CAT (ODBC 1.0) |
1 | varchar | Katalognamn för den tabell som statistiken eller indexet gäller för. NULL om inte tillämpligt för datakällan. Om en drivrutin stöder kataloger för vissa tabeller men inte för andra, till exempel när drivrutinen hämtar data från olika DBMS returnerar den en tom sträng ("") för de tabeller som inte har kataloger. |
TABLE_SCHEM (ODBC 1.0) |
2 | varchar | Schemanamn för den tabell som statistiken eller indexet gäller för. NULL om inte tillämpligt för datakällan. Om en drivrutin stöder scheman för vissa tabeller men inte för andra, till exempel när drivrutinen hämtar data från olika DBMS returnerar den en tom sträng ("") för de tabeller som inte har scheman. |
TABLE_NAME (ODBC 1.0) |
3 |
varchar inte NULL |
Tabellnamn för den tabell som statistiken eller indexet gäller för. |
NON_UNIQUE (ODBC 1.0) |
4 | smallint | Anger om indexet inte tillåter duplicerade värden:SQL_TRUE om indexvärdena kan vara icke-substantiva.SQL_FALSE om indexvärdena måste vara unika.NULL returneras om TYPE är SQL_TABLE_STAT. |
INDEX_QUALIFIER (ODBC 1.0) |
5 | varchar | Identifieraren som används för att kvalificera indexnamnet som gör en DROP INDEX, NULL returneras om en indexkvalificerare inte stöds av datakällan eller om TYPE är SQL_TABLE_STAT. Om ett värde som inte är null returneras i den här kolumnen måste det användas för att kvalificera indexnamnet för en DROP INDEX -instruktion. Annars TABLE_SCHEM bör det användas för att kvalificera indexnamnet. |
INDEX_NAME (ODBC 1.0) |
6 | varchar | Indexnamn; NULL returneras om TYPE är SQL_TABLE_STAT. |
TYPE (ODBC 1.0) |
7 |
smallint inte NULL |
Typ av information som returneras:SQL_TABLE_STAT anger en statistik för tabellen (i CARDINALITY kolumnen eller PAGES ).SQL_INDEX_BTREE anger ett B-trädindex.SQL_INDEX_CLUSTERED anger ett grupperat index.SQL_INDEX_CONTENT anger ett innehållsindex.SQL_INDEX_HASHED anger ett hashindex.SQL_INDEX_OTHER anger en annan typ av index. |
ORDINAL_POSITION (ODBC 1.0) |
8 | smallint | Kolumnsekvensnummer i index (från och med 1); NULL returneras om TYPE är SQL_TABLE_STAT. |
COLUMN_NAME (ODBC 1.0) |
9 | varchar | Kolumnnamn. Om kolumnen baseras på ett uttryck, till exempel SALARY + BENEFITS, returneras uttrycket. Om uttrycket inte kan fastställas returneras en tom sträng.
NULL returneras om TYPE är SQL_TABLE_STAT. |
ASC_OR_DESC (ODBC 1.0) |
10 | char(1) | Sorteringssekvens för kolumnen: "A" för stigande; "D" för fallande; NULL returneras om kolumnsorteringssekvensen inte stöds av datakällan eller om TYPE är SQL_TABLE_STAT. |
CARDINALITY (ODBC 1.0) |
11 | heltal | Kardinalitet för tabell eller index; antal rader i tabellen om TYPE är SQL_TABLE_STAT; antalet unika värden i indexet om TYPE inte SQL_TABLE_STAT, NULL returneras om värdet inte är tillgängligt från datakällan. |
PAGES (ODBC 1.0) |
12 | heltal | Antal sidor som används för att lagra indexet eller tabellen. antal sidor för tabellen om TYPE är SQL_TABLE_STAT; antal sidor för indexet om TYPE inte SQL_TABLE_STAT, NULL returneras om värdet inte är tillgängligt från datakällan eller om det inte är tillämpligt för datakällan. |
FILTER_CONDITION (ODBC 2.0) |
13 | varchar | Om indexet är ett filtrerat index är det här filtervillkoret, till exempel SALARY > 30000; om filtervillkoret inte kan fastställas är detta en tom sträng.NULL Om indexet inte är ett filtrerat index kan det inte avgöras om indexet är ett filtrerat index eller TYPE är SQL_TABLE_STAT. |
Om raden i resultatuppsättningen motsvarar en tabell anger TYPE drivrutinen till SQL_TABLE_STAT och anger NON_UNIQUE, INDEX_QUALIFIER, INDEX_NAME, ORDINAL_POSITION, COLUMN_NAMEoch ASC_OR_DESC till NULL. Om CARDINALITY eller PAGES inte är tillgängliga från datakällan anger drivrutinen dem till NULL.
Kodexempel
Ett kodexempel på en liknande funktion finns i SQLColumns Function.
Relaterade funktioner
| Mer information om | Article |
|---|---|
| Binda en buffert till en kolumn i en resultatuppsättning | SQLBindCol-funktion |
| Avbryta instruktionsbearbetning | SQLCancel-funktion |
| Hämtar en enskild rad eller ett datablock i framåtriktad riktning. | SQLFetch-funktion |
| Hämtar ett datablock eller bläddrar igenom en resultatuppsättning | SQLFetchScroll-funktion |
| Returnera kolumnerna i sekundärnycklar | SQLForeignKeys-funktion |
| Returnera kolumnerna i en primärnyckel | SQLPrimaryKeys-funktion |