SQLGetDiagRec İşlevi

Uygunluk
Tanıtılan Sürüm: ODBC 3.0 Standartlarına Uyum: ISO 92

Summary
SQLGetDiagRec , hata, uyarı ve durum bilgisi içeren bir tanı kaydının birden fazla alanının mevcut değerlerini döndürür. Her çağrı için bir tanı alanı döndüren SQLGetDiagField'in aksine, SQLGetDiagRec tanı kaydında SQLSTATE, yerel hata kodu ve tanı mesajı metni dahil olmak üzere yaygın kullanılan birkaç tanı kaydı alanını döndürür.

Syntax

  
SQLRETURN SQLGetDiagRec(  
     SQLSMALLINT     HandleType,  
     SQLHANDLE       Handle,  
     SQLSMALLINT     RecNumber,  
     SQLCHAR *       SQLState,  
     SQLINTEGER *    NativeErrorPtr,  
     SQLCHAR *       MessageText,  
     SQLSMALLINT     BufferLength,  
     SQLSMALLINT *   TextLengthPtr);  

Arguments

HandleType
[Giriş] Tanılamanın gerekli olduğu tanıtıcı türünü açıklayan tanıtıcı türü tanımlayıcısı. Aşağıdakilerden biri olmalıdır:

  • SQL_HANDLE_DBC

  • SQL_HANDLE_DBC_INFO_TOKEN

  • SQL_HANDLE_DESC

  • SQL_HANDLE_ENV

  • SQL_HANDLE_STMT

SQL_HANDLE_DBC_INFO_TOKEN tutamacı yalnızca Sürücü Yöneticisi ve sürücüsü tarafından kullanılır. Uygulamalar bu tanıtıcı türünü kullanmamalıdır. SQL_HANDLE_DBC_INFO_TOKEN hakkında daha fazla bilgi için bkz. ODBC Sürücüsünde Farkındalık Connection-Pool Geliştirme.

Kulp
[Giriş] HandleTypetarafından belirtilen türdeki tanılama veri yapısı için bir tanıtıcı. HandleType SQL_HANDLE_ENV ise, Tanıtıcı paylaşılan veya paylaşılmayan bir ortam tanıtıcısı olabilir.

RecNumber
[Giriş] Uygulamanın bilgi aradığı durum kaydını gösterir. Durum kayıtları 1'den numaralandırılır.

SQLState
[Çıkış] RecNumber tanı kaydı için beş karakterli SQLSTATE kodunu (ve sonlandıran NULL'u) döndürmek üzere bir tampon işareti. İlk iki karakter sınıfı gösterir; sonraki üçü alt sınıfı gösterir. Bu bilgiler SQL_DIAG_SQLSTATE tanı alanında yer alır. Daha fazla bilgi için bkz. sqlstates.

NativeErrorPtr
[Çıkış] Veri kaynağına özgü yerel hata kodunu döndürmek için bir tampona işaret edin. Bu bilgiler SQL_DIAG_NATIVE tanı alanında yer alır.

İleti Metni
[Çıkış] Tanı mesajı metin dizesini döndürmek için bir tampona işaret edin. Bu bilgiler SQL_DIAG_MESSAGE_TEXT tanı alanında yer alır. Dizinin formatı için Tanısal Mesajlar bölümüne bakınız.

MessageText NULL ise, TextLengthPtr yine de MessageText tarafından işaret edilen tamponda döndürülebilecek toplam karakter sayısını (karakter verisi için null-sonlandırma karakteri hariç) döndürecektir.

BufferLength
[Giriş] *MessageText buffer'ın uzunluğu karakter cinsinden. Tanısal mesaj metninin maksimum uzunluğu yoktur.

TextLengthPtr
[Çıkış] * MessageText'te döndürülebilecek toplam karakter sayısını (null-sonlandırma karakteri için gereken karakter sayısı hariç) döndürmek için bir tampon işaretçisi. Eğer döndürülebilecek karakter sayısı BufferLength'den fazlaysa, *MessageText'teki tanı mesajı metni BufferLength olarak kısaltılır, null-sonlandırma karakterinin uzunluğu çıkarılır.

İadeler

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_NO_DATA ya da SQL_INVALID_HANDLE.

Diagnostics

SQLGetDiagRec kendisi için tanı kayıtları paylaşmaz. Kendi yürütmesinin sonucunu raporlamak için aşağıdaki dönüş değerlerini kullanır:

  • SQL_SUCCESS: İşlev, tanılama bilgilerini başarıyla döndürdü.

  • SQL_SUCCESS_WITH_INFO: *MessageText tamponu istenen tanı mesajını tutmak için çok küçüktü. Herhangi bir tanı kaydı oluşturulmadı. Bir kesintinin gerçekleşip gerçekleşmediğini belirlemek için uygulama, BufferLength'i mevcut bayt sayısıyla karşılaştırmalıdır; bu sayı *TextLengthPtr'de yazılır.

  • SQL_INVALID_HANDLE: HandleType ve Tanıtıcı tarafından belirtilen tanıtıcı geçerli bir tanıtıcı değildi.

  • SQL_ERROR: Aşağıdakilerden biri oluştu:

    • RecNumber negatif ya da 0 idi.

    • BufferLength sıfırdan küçüktü.

    • Zaman uyumsuz bildirim kullanılırken, tanıtıcıdaki zaman uyumsuz işlem tamamlanmadı.

  • SQL_NO_DATA: RecNumber, Tanıtıcı'da belirtilen tanıtıcı için var olan tanılama kayıtlarının sayısından fazlaydı. İşlev, Tanıtıcıiçin tanılama kaydı yoksa RecNumber pozitif için de SQL_NO_DATA döndürür.

Comments

Bir uygulama genellikle bir ODBC fonksiyonuna önceki çağrı SQL_ERROR veya SQL_SUCCESS_WITH_INFO döndürdüğünde SQLGetDiagRec çağrısını yapar. Ancak, herhangi bir ODBC fonksiyonu her çağrıldığında sıfır veya daha fazla tanı kaydı gönderebildiğinden, bir uygulama herhangi bir ODBC fonksiyon çağrısından sonra SQLGetDiagRec'i çağırabilir. Bir uygulama, tanı veri yapısındaki bazı veya tüm kayıtları döndürmek için SQLGetDiagRec'i birden fazla kez çağırabilir. ODBC, aynı anda depolanabilecek tanı kayıt sayısına bir sınır koymaz.

SQLGetDiagRec , tanı veri yapısının başlığından alanları döndürmek için kullanılamaz. ( RecNumber argümanı 0'dan büyük olmalıdır.) Uygulama bu amaçla SQLGetDiagField çağırmalıdır.

SQLGetDiagRec , yalnızca Handle argümanında belirtilen tutamaçla en son ilişkili tanı bilgilerini alır. Uygulama, SQLGetDiagRec, SQLGetDiagField veya SQLErrror dışında başka bir ODBC fonksiyonu çağırırsa, aynı tutuktaki önceki çağrılardan alınan tanı bilgileri kaybolur.

Bir uygulama, SQLGetDiagRec SQL_SUCCESS döndürdüğü sürece, RecNumber'ı döngüye alarak tüm tanı kayıtlarını tarabiliyor. SQLGetDiagRec çağrıları başlık ve kayıt alanlarına zarar vermez. Uygulama, bu arada SQLGetDiagRec, SQLGetDiagField veya SQLError dışında başka bir fonksiyon çağrılmadığı sürece, bir kayıttan alan almak için daha sonra tekrar çağırabilir. Uygulama ayrıca SQLGetDiagField çağırarak SQL_DIAG_NUMBER alanının değerini alabilir ve ardından SQLGetDiagRec'i bu kadar kez çağırarak toplam tanı kayıtlarının sayını da elde edebilir.

Tanı veri yapısının alanlarının tanımı için SQLGetDiagField sayfasına bakınız. Daha fazla bilgi için bkz. SQLGetDiagRec ve SQLGetDiagField kullanma ve SQLGetDiagRec ve SQLGetDiagFieldUygulama .

Zaman uyumsuz olarak yürütülen API dışında bir API çağrılması HY010 "İşlev dizisi hatası" oluşturur. Ancak, zaman uyumsuz işlem tamamlanmadan önce hata kaydı alınamaz.

HandleType Bağımsız Değişkeni

Her tanıtıcı türüyle ilişkilendirilmiş tanılama bilgileri olabilir. HandleType argümanı, Handle argümanının tutmaç tipini gösterir.

Bazı üst bilgi ve kayıt alanları ortam, bağlantı, deyim ve tanımlayıcı tanıtıcıları için döndürülemez. Bir alanın uygulanmadığı bu tutamaçlar, SQLGetDiagField içindeki "Başlık Alanları" ve "Kayıt Alanları" bölümlerinde belirtilmiştir.

SQLGetDiagRec çağrısı, HandleType SQL_HANDLE_SENV ise SQL_INVALID_HANDLE döner; bu da paylaşılan bir ortam tutalı anlamına gelir. Ancak , HandleType SQL_HANDLE_ENV ise, Handle paylaşılan veya paylaşılmayan bir ortam tutalı olabilir.

Hakkında bilgi için Bkz:
Tanı kaydının bir alanını veya tanı başlığının bir alanını elde etmek SQLGetDiagField Fonksiyonu