Aracılığıyla paylaş


SQLStatistics işlevi

SQLStatistics tek bir tablo ve tabloyla ilişkilendirilmiş dizinler hakkındaki istatistiklerin listesini alır. Sürücü bilgileri sonuç kümesi olarak döndürür.

Uygunluk

Sunulan sürüm: ODBC 1.0 Standartları Uyumluluğu: ISO 92

Sözdizimi

SQLRETURN SQLStatistics(
     SQLHSTMT        StatementHandle ,
     SQLCHAR *       CatalogName ,
     SQLSMALLINT     NameLength1 ,
     SQLCHAR *       SchemaName ,
     SQLSMALLINT     NameLength2 ,
     SQLCHAR *       TableName ,
     SQLSMALLINT     NameLength3 ,
     SQLUSMALLINT    Unique ,
     SQLUSMALLINT    Reserved);

Arguments

StatementHandle

[Giriş] Deyim tanıtıcısı.

Catalogname

[Giriş] Katalog adı. Sürücü bazı tablolar için katalogları destekliyorsa ancak diğerleri için desteklemiyorsa (örneğin, sürücü farklı DBMS'lerden veri aldığında), boş bir dize ("") katalogları olmayan tabloları gösterir. CatalogName dize arama deseni içeremez.

SQL_ATTR_METADATA_ID deyim özniteliği olarak ayarlanırsaSQL_TRUE, CatalogName bir tanımlayıcı olarak değerlendirilir ve büyük/küçük harf önemli değildir. iseSQL_FALSE, CatalogName sıradan bir bağımsız değişkendir; tam anlamıyla ele alır ve büyük/küçük harf önemlidir. Daha fazla bilgi için bkz. Katalog İşlevleri'ndeki Bağımsız Değişkenler.

NameLength1

[Giriş] CatalogName karakterlerinin uzunluğu.

Şema Adı

[Giriş] Şema adı. Sürücü bazı tablolar için şemaları destekliyorsa ancak diğerleri için desteklemiyorsa (örneğin, sürücü farklı DBMS'lerden veri aldığında), boş bir dize ("") şemaları olmayan tabloları gösterir. SchemaName dize arama deseni içeremez.

SQL_ATTR_METADATA_ID deyimi özniteliği olarak ayarlanırsa SQL_TRUESchemaName tanımlayıcı olarak değerlendirilir ve büyük/küçük harf önemli değildir. ise SQL_FALSESchemaName sıradan bir bağımsız değişkendir; tam anlamıyla ele alınır ve büyük/küçük harf önemlidir.

NameLength2

[Giriş] SchemaName karakterlerinin uzunluğu.

Tablo Adı

[Giriş] Tablo adı. Bu bağımsız değişken null işaretçi olamaz. TableName dize arama deseni içeremez.

SQL_ATTR_METADATA_ID deyimi özniteliği olarak SQL_TRUEayarlanırsa, TableName bir tanımlayıcı olarak değerlendirilir ve büyük/küçük harf önemli değildir. ise SQL_FALSETableName sıradan bir bağımsız değişkendir; tam anlamıyla ele alır ve büyük/küçük harf önemlidir.

NameLength3

[Giriş] TableName karakterlerinin uzunluğu.

Eşsiz

[Giriş] Dizin türü: SQL_INDEX_UNIQUE veya SQL_INDEX_ALL.

Ayrılmış

[Giriş] Sonuç kümesindeki CARDINALITY ve PAGES sütunlarının önemini gösterir. Aşağıdaki seçenekler yalnızca ve PAGES sütunlarının dönüşünü CARDINALITY etkiler; dizin bilgileri döndürülse CARDINALITY ve PAGES döndürülmezse bile döndürülür.

SQL_ENSURE , sürücünün istatistiği koşulsuz olarak almasını istemektedir. (Yalnızca Açık Grup standardına uyan ve ODBC uzantılarını desteklemeyen sürücüler 'i desteklemez SQL_ENSURE.)

SQL_QUICK, sürücünün yalnızca sunucudan kullanılabilir durumdaysa ve PAGES değerini almasını CARDINALITY istemektedir. Bu durumda, sürücü değerlerin güncel olduğundan emin olmaz. (Open Group standardına yazılan uygulamalar her zaman ODBC 3.x uyumlu sürücülerden davranış alırSQL_QUICK.)

İade

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_ERRORveya SQL_INVALID_HANDLE.

Diagnostics

veya SQL_SUCCESS_WITH_INFOdöndürdüğünde SQL_ERRORSQLStatistics, handletypeSQL_HANDLE_STMT ve handle ofStatementHandle ile çağrılarak SQLGetDiagRec ilişkili SQLSTATE bir değer elde edilebilir. Aşağıdaki tabloda genellikle tarafından SQLStatistics döndürülen değerler listelenir SQLSTATE ve her biri bu işlev bağlamında açıklanmaktadır; notasyon(DM), Sürücü Yöneticisi tarafından döndürülen her SQLSTATE birinin açıklamalarından öncedir. Her SQLSTATE değerle ilişkili dönüş kodu, aksi belirtilmedikçe şeklindedir SQL_ERROR.

SQLSTATE Hata Description
01000 Genel uyarı Sürücüye özgü bilgilendirici ileti. (İşlev döndürür SQL_SUCCESS_WITH_INFO.)
08S01 İletişim bağlantısı hatası sürücü ile sürücünün bağlandığı veri kaynağı arasındaki iletişim bağlantısı, işlev işlenmeden önce başarısız oldu.
24000 Geçersiz imleç durumu StatementHandle üzerinde bir imleç açıktı ve SQLFetch veya SQLFetchScroll çağrılmıştı. Bu hata, döndürdüyse SQLFetch veya SQLFetchScroll döndürmediyse SQL_NO_DATA Sürücü Yöneticisi tarafından döndürülür ve döndürdüyse SQLFetch sürücü SQLFetchScroll tarafından döndürülür SQL_NO_DATA.

StatementHandle üzerinde bir imleç açıktı, ancak SQLFetchSQLFetchScroll çağrılmamıştı.
40001 Serileştirme hatası Başka bir işlemle kaynak kilitlenmesi nedeniyle işlem geri alındı.
40003 Deyim tamamlama bilinmiyor İlişkili bağlantı bu işlevin yürütülmesi sırasında başarısız oldu ve işlemin durumu belirlenemiyor.
HY000 Genel hata Belirli olmayan ve uygulamaya özgü SQLSTATESQLSTATE tanımlanmayan bir hata oluştu. *MessageText arabelleğinde tarafından SQLGetDiagRec döndürülen hata iletisi, hatayı ve nedenini açıklar.
HY001 Bellek ayırma hatası Sürücü, işlevin yürütülmesini veya tamamlanmasını desteklemek için gereken belleği ayıramadı.
HY008 İşlem iptal edildi StatementHandle için zaman uyumsuz işleme etkinleştirildi. İşlev, yürütmeyi SQLCancel tamamlamadan önce veya SQLCancelHandleStatementHandle üzerinde çağrıldı ve ardından işlev StatementHandle üzerinde yeniden çağrıldı.

İşlev çağrılır ve yürütme SQLCancel tamamlanmadan önce veya SQLCancelHandle çok iş parçacıklı bir uygulamadaki farklı bir iş parçacığından StatementHandle üzerinde çağrılır.
HY009 Geçersiz null işaretçi kullanımı TableName bağımsız değişkeni null işaretçiydi.

SQL_ATTR_METADATA_ID deyimi özniteliği olarak SQL_TRUEayarlandı, CatalogName bağımsız değişkeni null işaretçiydi ve SQL_CATALOG_NAMEInfoType, katalog adlarının desteklendiğini döndürür.

(DM) SQL_ATTR_METADATA_ID Deyim özniteliği olarak SQL_TRUEayarlandı ve SchemaName bağımsız değişkeni null bir işaretçiydi.
HY010 İşlev dizisi hatası (DM) StatementHandle ile ilişkili bağlantı tanıtıcısı için zaman uyumsuz olarak yürütülen bir işlev çağrıldı. İşlev çağrıldığında SQLStatistics bu zaman uyumsuz işlev hala yürütülüyordu.

(DM) SQLExecute, SQLExecDirectveya SQLMoreResultsdeyimi için çağrıldı ve döndürüldü SQL_PARAM_DATA_AVAILABLE. Bu işlev, tüm akış parametreleri için veri alınmadan önce çağrıldı.

(DM) StatementHandle için zaman uyumsuz olarak yürütülen bir işlev (bu işlev değil) çağrıldı ve bu işlev çağrıldığında hala yürütülüyordu.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperationsveya SQLSetPosdeyimi için çağrıldı ve döndürüldü SQL_NEED_DATA. Bu işlev, tüm yürütme sırasında veri parametreleri veya sütunları için veri gönderilmeden önce çağrıldı.
HY013 Bellek yönetimi hatası Büyük olasılıkla düşük bellek koşulları nedeniyle temel alınan bellek nesnelerine erişilemediğinden işlev çağrısı işlenemedi.
HY090 Geçersiz dize veya arabellek uzunluğu (DM) Ad uzunluğu bağımsız değişkenlerinden birinin değeri 0'dan küçüktür ancak değerine SQL_NTSeşit değildir.

Ad uzunluğu bağımsız değişkenlerinden birinin değeri, karşılık gelen ad için uzunluk üst sınırını aştı.
HY100 Benzersizlik seçeneği türü aralık dışında (DM) Geçersiz bir Benzersiz değer belirtildi.
HY101 Doğruluk seçeneği türü aralık dışında (DM) Geçersiz bir Ayrılmış değer belirtildi.
HY117 Bilinmeyen işlem durumu nedeniyle bağlantı askıya alındı. Yalnızca bağlantıyı kesme ve salt okunur işlevlere izin verilir. (DM) Askıya alınma durumu hakkında daha fazla bilgi için bkz. SQLEndTran İşlevi.
HYC00 İsteğe bağlı özellik uygulanmadı Bir katalog belirtildi ve sürücü veya veri kaynağı katalogları desteklemiyor.

Bir şema belirtildi ve sürücü veya veri kaynağı şemaları desteklemiyor.

ve SQL_ATTR_CURSOR_TYPE deyimi özniteliklerinin geçerli ayarlarının SQL_ATTR_CONCURRENCY birleşimi sürücü veya veri kaynağı tarafından desteklenmiyordu.

deyim SQL_ATTR_USE_BOOKMARKS özniteliği olarakSQL_UB_VARIABLESQL_ATTR_CURSOR_TYPE, deyim özniteliği ise sürücünün yer işaretlerini desteklemediği bir imleç türüne ayarlanmıştır.
HYT00 Zaman aşımı süresi doldu Veri kaynağı istenen sonuç kümesini döndürmeden önce sorgu zaman aşımı süresi doldu. Zaman aşımı süresi aracılığıyla SQLSetStmtAttrSQL_ATTR_QUERY_TIMEOUTayarlanır.
HYT01 Bağlantı zaman aşımı süresi doldu Veri kaynağı isteği yanıtlamadan önce bağlantı zaman aşımı süresi doldu. Bağlantı zaman aşımı süresi aracılığıyla SQLSetConnectAttrSQL_ATTR_CONNECTION_TIMEOUTayarlanır.
IM001 Sürücü bu işlevi desteklemiyor (DM) StatementHandle ile ilişkilendirilmiş sürücü işlevi desteklemiyor.
IM017 Yoklama zaman uyumsuz bildirim modunda devre dışı bırakıldı Bildirim modeli her kullanıldığında yoklama devre dışı bırakılır.
IM018 SQLCompleteAsync bu tanıtıcıda önceki zaman uyumsuz işlemi tamamlamak için çağrılmadı. Tanıtıcıdaki önceki işlev çağrısı döndürülüyorsa SQL_STILL_EXECUTING ve bildirim modu etkinse, SQLCompleteAsync işlem sonrası işlemi yapmak ve işlemi tamamlamak için tanıtıcıda çağrılmalıdır.

Comments

SQLStatistics, ve tarafından sıralanmış NON_UNIQUEINDEX_NAMETYPEINDEX_QUALIFIERstandart sonuç kümesi olarak tek bir tablo hakkındaki bilgileri döndürür.ORDINAL_POSITION Sonuç kümesi, tabloya ilişkin istatistik bilgilerini (sonuç kümesinin CARDINALITY ve PAGES sütunlarında) her dizinle ilgili bilgilerle birleştirir. Bu bilgilerin nasıl kullanılabileceğini öğrenmek için bkz. Katalog Verilerinin Kullanımları.

, , TABLE_SCHEMTABLE_NAMEve COLUMN_NAME sütunlarının TABLE_CATgerçek uzunluklarını belirlemek için, bir uygulama , , SQL_MAX_SCHEMA_NAME_LENSQL_MAX_TABLE_NAME_LENve SQL_MAX_COLUMN_NAME_LEN seçenekleriyle SQL_MAX_CATALOG_NAME_LENçağrı SQLGetInfo yapabilir.

Uyarı

ODBC katalog işlevlerinin genel kullanımı, bağımsız değişkenleri ve döndürülen verileri hakkında daha fazla bilgi için bkz . Katalog İşlevleri.

Odbc 3.x için aşağıdaki sütunlar yeniden adlandırıldı. Uygulamalar sütun numarasına göre bağlandığından sütun adı değişiklikleri geriye dönük uyumluluğu etkilemez.

ODBC 2.0 sütunu ODBC 3.x sütunu
TABLE_QUALIFIER TABLE_CAT
TABLE_OWNER TABLE_SCHEM
SEQ_IN_INDEX ORDINAL_POSITION
COLLATION ASC_OR_DESC

Aşağıdaki tabloda sonuç kümesindeki sütunlar listelenir. 13 (FILTER_CONDITION ) sütununun ötesindeki ek sütunlar sürücü tarafından tanımlanabilir. Bir uygulama, açık bir sıralı konum belirtmek yerine sonuç kümesinin sonundan geri sayarak sürücüye özgü sütunlara erişim elde etmelidir. Daha fazla bilgi için bkz. Katalog İşlevleri Tarafından Döndürülen Veriler.

Sütun adı Sütun numarası Veri türü Comments
TABLE_CAT (ODBC 1.0) 1 varchar İstatistik veya dizinin uygulandığı tablonun katalog adı; NULL veri kaynağı için geçerli değilse. Sürücü bazı tablolar için katalogları destekliyorsa ancak diğerleri için desteklemiyorsa (örneğin, sürücü farklı DBMS'lerden veri aldığında), katalogları olmayan tablolar için boş bir dize ("") döndürür.
TABLE_SCHEM (ODBC 1.0) 2 varchar İstatistik veya dizinin uygulandığı tablonun şema adı; NULL veri kaynağı için geçerli değilse. Sürücü bazı tablolar için şemaları destekliyorsa ancak diğerleri için desteklemiyorsa (örneğin, sürücü farklı DBMS'lerden veri aldığında), şemaları olmayan tablolar için boş bir dize ("") döndürür.
TABLE_NAME (ODBC 1.0) 3 varchar değil NULL İstatistik veya dizinin uygulandığı tablonun tablo adı.
NON_UNIQUE (ODBC 1.0) 4 smallint Dizinin yinelenen değerlere izin verip vermediğini gösterir:

SQL_TRUE dizin değerleri nonunique olabilir.

SQL_FALSE dizin değerlerinin benzersiz olması gerekiyorsa.

NULL ise TYPESQL_TABLE_STATdöndürülür.
INDEX_QUALIFIER (ODBC 1.0) 5 varchar dizin adını bir yaparak DROP INDEXnitelemek için kullanılan tanımlayıcı, NULL veri kaynağı tarafından bir dizin niteleyicisi desteklenmiyorsa veya ise TYPESQL_TABLE_STATdöndürülür. Bu sütunda null olmayan bir değer döndürülürse, bir DROP INDEX deyimdeki dizin adını niteleme amacıyla kullanılmalıdır; aksi takdirde, TABLE_SCHEM dizin adını nitelemek için kullanılmalıdır.
INDEX_NAME (ODBC 1.0) 6 varchar Dizin adı; NULL ise TYPESQL_TABLE_STATdöndürülür.
TYPE (ODBC 1.0) 7 smallint değil NULL Döndürülen bilgi türü:

SQL_TABLE_STAT tablo CARDINALITY (veya PAGES sütununda) için bir istatistik gösterir.

SQL_INDEX_BTREE bir B Ağacı dizinini gösterir.

SQL_INDEX_CLUSTERED kümelenmiş dizini gösterir.

SQL_INDEX_CONTENT bir içerik dizinini gösterir.

SQL_INDEX_HASHED karma bir dizini gösterir.

SQL_INDEX_OTHER başka bir dizin türünü gösterir.
ORDINAL_POSITION (ODBC 1.0) 8 smallint Dizindeki sütun dizisi numarası (1 ile başlayarak); NULL ise TYPESQL_TABLE_STATdöndürülür.
COLUMN_NAME (ODBC 1.0) 9 varchar Sütun adı. Sütun gibi SALARY + BENEFITSbir ifadeyi temel alırsa, ifade döndürülür; ifade belirlenemezse boş bir dize döndürülür. NULL ise TYPESQL_TABLE_STATdöndürülür.
ASC_OR_DESC (ODBC 1.0) 10 char(1) Sütunun sıralama sırası: Artan için "A"; Azalan için "D" ; NULL , sütun sıralama dizisi veri kaynağı tarafından desteklenmiyorsa veya ise TYPESQL_TABLE_STATdöndürülür.
CARDINALITY (ODBC 1.0) 11 integer Tablo veya dizinin kardinalitesi; ise TYPESQL_TABLE_STATtablodaki satır sayısı ; değilse dizindeki TYPESQL_TABLE_STATbenzersiz değerlerin sayısı; NULL değer veri kaynağından kullanılamıyorsa döndürülür.
PAGES (ODBC 1.0) 12 integer Dizini veya tabloyu depolamak için kullanılan sayfa sayısı; değeri TYPESQL_TABLE_STATveri kaynağından kullanılamıyorsa veya veri kaynağı için geçerli değilse, tablo için sayfa sayısı ; değilse dizinin NULLTYPESQL_TABLE_STATsayfa sayısı döndürülür.
FILTER_CONDITION (ODBC 2.0) 13 varchar Dizin filtrelenmiş bir dizinse, bu filtre koşuludur; örneğin SALARY > 30000, filtre koşulu belirlenemezse, bu boş bir dizedir.

NULL dizin filtrelenmiş bir dizin değilse, dizinin filtrelenmiş bir dizin TYPESQL_TABLE_STATmi yoksa olup olmadığı belirlenemez.

Sonuç kümesindeki satır bir tabloya karşılık geliyorsa, sürücü olarak ayarlanır TYPE ve , INDEX_QUALIFIER, INDEX_NAME, ORDINAL_POSITION, COLUMN_NAMEve ASC_OR_DESCNULLolarak ayarlanırNON_UNIQUE.SQL_TABLE_STAT Veri kaynağından kullanılabilir veya PAGES kullanılamıyorsaCARDINALITY, sürücü bunları olarak NULLayarlar.

Kod örneği

Benzer bir işlevin kod örneği için bkz. SQLColumns İşlevi.

Hakkında bilgi için Article
Sonuç kümesindeki bir sütuna arabellek bağlama SQLBindCol İşlevi
Deyim işlemeyi iptal etme SQLCancel İşlevi
Tek bir satır veya veri bloğunu yalnızca ileri yönde getirme. SQLFetch İşlevi
Veri bloğunu getirme veya sonuç kümesinde kaydırma SQLFetchScroll İşlevi
Yabancı anahtar sütunlarını döndürme SQLForeignKeys İşlevi
Birincil anahtarın sütunlarını döndürme SQLPrimaryKeys İşlevi