Aracılığıyla paylaş


SQLGetDiagField İşlevi

uyumluluk
Sunulan Sürüm: ODBC 3.0 Standartları Uyumluluğu: ISO 92

Özeti
SQLGetDiagField hata, uyarı ve durum bilgilerini içeren tanılama veri yapısının (belirtilen tanıtıcıyla ilişkili) kaydının geçerli değerini döndürür.

Sözdizimi


SQLRETURN SQLGetDiagField(  
     SQLSMALLINT     HandleType,  
     SQLHANDLE       Handle,  
     SQLSMALLINT     RecNumber,  
     SQLSMALLINT     DiagIdentifier,  
     SQLPOINTER      DiagInfoPtr,  
     SQLSMALLINT     BufferLength,  
     SQLSMALLINT *   StringLengthPtr);  

Bağımsız değişken

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 Connection-Pool Farkındalığı Geliştirme.

İşle
[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. DiagIdentifier bağımsız değişkeni tanılama üst bilgisinin herhangi bir alanını gösteriyorsa, RecNumber yoksayılır. Değilse, 0'dan fazla olmalıdır.

DiagIdentifier
[Giriş] Değeri döndürülecek tanılama alanını gösterir. Daha fazla bilgi için "Açıklamalar" bölümündeki "DiagIdentifier Argument" bölümüne bakın.

DiagInfoPtr
[Çıkış] Tanılama bilgilerinin döndürüleceği arabelleğe ilişkin işaretçi. Veri türü, DiagIdentifierdeğerine bağlıdır. DiagInfoPtr bir tamsayı türündeyse, bazı sürücüler yalnızca alt 32 bit veya 16 bit arabelleği yazabileceği ve daha yüksek sıralı biti değişmeden bırakabileceği için, uygulamaların SQLULEN arabelleği kullanması ve bu işlevi çağırmadan önce değeri 0 olarak başlatması gerekir.

DiagInfoPtr NULL ise, StringLengthPtr, DiagInfoPtrtarafından işaret edilen arabellekte döndürülecek toplam bayt sayısını (karakter verileri için null sonlandırma karakteri hariç) döndürmeye devam eder.

BufferLength
[Giriş] DiagIdentifier ODBC tanımlı bir tanılama ve DiagInfoPtr bir karakter dizesine veya ikili arabelleğe işaret ederse, bu bağımsız değişken *DiagInfoPtruzunluğu olmalıdır. DiagIdentifier ODBC tanımlı bir alansa ve *DiagInfoPtr bir tamsayıysa BufferLength yoksayılır. *DiagInfoPtr değeri bir Unicode dizesiyse (SQLGetDiagFieldWçağrılırken), BufferLength bağımsız değişkeni çift bir sayı olmalıdır.

DiagIdentifier sürücü tanımlı bir alansa, uygulama BufferLength bağımsız değişkenini ayarlayarak alanın niteliğini Driver Manager'a gösterir. BufferLength aşağıdaki değerlere sahip olabilir:

  • DiagInfoPtr bir karakter dizesinin işaretçisiyse, BufferLength dizenin veya SQL_NTS uzunluğudur.

  • DiagInfoPtr ikili arabelleğe işaretçiyse, uygulama BufferLengthSQL_LEN_BINARY_ATTR(uzunluk) makrosunun sonucunu yerleştirir. Bu, BufferLengthnegatif bir değer yerleştirir.

  • DiagInfoPtr karakter dizesi veya ikili dize dışında bir değerin işaretçisiyse BufferLength değeri SQL_IS_POINTER olmalıdır.

  • *DiagInfoPtr sabit uzunlukta bir veri türü içeriyorsa BufferLength uygun şekilde SQL_IS_INTEGER, SQL_IS_UINTEGER, SQL_IS_SMALLINT veya SQL_IS_USMALLINT.

StringLengthPtr
[Çıkış] Karakter verileri için *DiagInfoPtriçinde döndürülebilen toplam bayt sayısını (null sonlandırma karakteri için gereken bayt sayısı hariç) döndürecek arabelleğe yönelik işaretçi. Döndürülecek bayt sayısı BufferLengthdeğerinden büyük veya buna eşitse, *DiagInfoPtr içindeki metin BufferLength olarak kesilir null sonlandırma karakterinin uzunluğu çıkarılır.

Döndürür

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_INVALID_HANDLE veya SQL_NO_DATA.

Tanılama

SQLGetDiagField kendisi için tanılama kayıtlarını göndermez. 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: *DiagInfoPtr istenen tanılama alanını tutamayacak kadar küçük. Bu nedenle, tanılama alanındaki veriler kesildi. Bir kesme işleminin gerçekleştiğini belirlemek için, uygulamanın BufferLength değerini*StringLengthPtrolarak yazılan kullanılabilir gerçek bayt sayısıyla karşılaştırması gerekir.

  • 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:

    • DiagIdentifier bağımsız değişkeni geçerli değerlerden biri değildi.

    • DiagIdentifier bağımsız değişkeni SQL_DIAG_CURSOR_ROW_COUNT, SQL_DIAG_DYNAMIC_FUNCTION, SQL_DIAG_DYNAMIC_FUNCTION_CODE veya SQL_DIAG_ROW_COUNT, ancak Tanıtıcı bir deyim tutamacı değildi. (Sürücü Yöneticisi bu tanılamayı döndürür.)

    • DiagIdentifier tanılama kaydındaki bir alanı gösterdiğinde RecNumber bağımsız değişkeni negatif veya 0'dı. RecNumber üst bilgi alanları için yoksayılır.

    • İstenen değer bir karakter dizesiydi ve bufferlength sıfırdan küçük.

    • 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.

Yorum

Bir uygulama genellikle üç hedeflerden birini gerçekleştirmek için SQLGetDiagField çağırır:

  1. İşlev çağrısı SQL_ERROR veya SQL_SUCCESS_WITH_INFO döndürdügünde (veya SQLBrowseConnect işlevi için SQL_NEED_DATA) belirli hata veya uyarı bilgilerini almak için.

  2. SqlExecute, SQLExecDirect, SQLBulkOperationsveya SQLSetPos (SQL_DIAG_ROW_COUNT üst bilgi alanından) çağrısıyla veri kaynağındaki satırların sayısını belirlemek veya geçerli açık imleçte var olan satır sayısını belirlemek için, sürücü bu bilgileri sağlayabilirse (SQL_DIAG_CURSOR_ROW_COUNT üst bilgi alanından).

  3. SQLExecDirect veya SQLExecute (SQL_DIAG_DYNAMIC_FUNCTION ve SQL_DIAG_DYNAMIC_FUNCTION_CODE üst bilgi alanlarından) bir çağrı tarafından yürütülen işlevi belirlemek için.

Herhangi bir ODBC işlevi her çağrıldığında sıfır veya daha fazla tanılama kaydı gönderebilir, böylece bir uygulama herhangi bir ODBC işlev çağrısının ardından SQLGetDiagField çağırabilir. Herhangi bir zamanda depolanabilecek tanılama kayıtlarının sayısıyla ilgili bir sınır yoktur. SQLGetDiagField yalnızca Tanıtıcı bağımsız değişkeninde belirtilen tanılama veri yapısıyla en son ilişkili tanılama bilgilerini alır. Uygulama SQLGetDiagField veya sqlGetDiagRecdışında bir ODBC işlevi çağırırsa, aynı tanıtıcıya sahip önceki bir çağrıdan gelen tanılama bilgileri kaybolur.

Bir uygulama, SQLGetDiagField SQL_SUCCESS döndürdüğü sürece RecNumberartırarak tüm tanılama kayıtlarını tarar. Durum kayıtlarının sayısı, SQL_DIAG_NUMBER üst bilgi alanında gösterilir. SQLGetDiagField çağrıları üst bilgi ve kayıt alanları için yıkıcı değildir. Uygulama SQLGetDiagField daha sonra yeniden çağırarak bir kayıttan alan alabilir. Bunun için, tanılama işlevleri dışında bir işlev ara içinde çağrılmamış olması ve kayıtları aynı tanıtıcıya göndermesi gerekir.

Bir uygulama SQLGetDiagField çağırarak SQL_DIAG_CURSOR_ROW_COUNT veya SQL_DIAG_ROW_COUNT dışında herhangi bir tanılama alanını döndürebilir ve Tanıtıcı bir deyim tutamacı değilse SQL_ERROR döndürür. Başka bir tanılama alanı tanımlanmamışsa, SQLGetDiagField çağrısı SQL_SUCCESS döndürür (başka bir tanılamayla karşılaşılmazsa) ve alan için tanımlanmamış bir değer döndürülür.

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 bağımsız değişkeni, Handletanıtıcı türünü 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 geçerli olmadığı tutamaçlar, aşağıdaki "Üst Bilgi Alanları" ve "Kayıt Alanları" bölümlerinde belirtilir.

HandleType SQL_HANDLE_ENV ise, Tanıtıcı paylaşılan veya paylaşılmayan bir ortam tutamacı olabilir.

Bir ortam tanıtıcısıyla sürücüye özgü üst bilgi tanılama alanları ilişkilendirilmemelidir.

Tanımlayıcı tutamacı için tanımlanan tek tanılama üst bilgisi alanları SQL_DIAG_NUMBER ve SQL_DIAG_RETURNCODE.

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

Bu bağımsız değişken, tanılama veri yapısından gereken alanın tanımlayıcısını gösterir. RecNumber 1'den büyük veya buna eşitse, alandaki veriler bir işlev tarafından döndürülen tanılama bilgilerini açıklar. RecNumber 0 ise, alan tanılama veri yapısının üst bilgisindedir ve bu nedenle belirli bilgilerle değil tanılama bilgilerini döndüren işlev çağrısıyla ilgili verileri içerir.

Sürücüler, tanılama veri yapısında sürücüye özgü üst bilgi ve kayıt alanları tanımlayabilir.

ODBC 2*.x* sürücüsüyle çalışan bir ODBC 3*.x* uygulaması SQLGetDiagField yalnızca SQL_DIAG_CLASS_ORIGIN, SQL_DIAG_CLASS_SUBCLASS_ORIGIN, SQL_DIAG_CONNECTION_NAME, SQL_DIAG_MESSAGE_TEXT, SQL_DIAG_NATIVE, SQL_DIAG_NUMBER, SQL_DIAG_RETURNCODE, SQL_DIAG_SERVER_NAME, DiagIdentifier bağımsız değişkeniyle çağırabilir. veya SQL_DIAG_SQLSTATE. Diğer tüm tanılama alanları SQL_ERROR döndürür.

Üst Bilgi Alanları

Aşağıdaki tabloda listelenen üst bilgi alanları DiagIdentifier bağımsız değişkenine eklenebilir.

DiagIdentifier Dönüş türü Döndürür
SQL_DIAG_CURSOR_ROW_COUNT SQLLEN Bu alan, imleçteki satır sayısını içerir. Semantiği, SQLGetInfo SQL_DYNAMIC_CURSOR_ATTRIBUTES2, SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2, SQL_KEYSET_CURSOR_ATTRIBUTES2 ve SQL_STATIC_CURSOR_ATTRIBUTES2 bilgi türlerine bağlıdır. Bu, her imleç türü için hangi satır sayılarının kullanılabilir olduğunu gösterir (SQL_CA2_CRC_EXACT ve SQL_CA2_CRC_APPROXIMATE bitlerde).

Bu alanın içeriği yalnızca deyim tanıtıcıları için tanımlanır ve yalnızca SQLExecute , SQLExecDirectveya SQLMoreResults çağrıldıktan sonra tanımlanır. sqlgetDiagField DiagIdentifier SQL_DIAG_CURSOR_ROW_COUNT dışında bir deyim tanıtıcısı ile çağırmak SQL_ERROR döndürür.
SQL_DIAG_DYNAMIC_FUNCTION SQLCHAR * Bu, temel alınan işlevin yürüttüğü SQL deyimini açıklayan bir dizedir. (Belirli değerler için bu bölümün devamında yer alan "Dinamik İşlev alanlarının değerleri" bölümüne bakın.) Bu alanın içeriği yalnızca deyim tanıtıcıları için tanımlanır ve yalnızca SQLExecute, SQLExecDirectveya SQLMoreResultsçağrısından sonra tanımlanır. DiagIdentifier deyim tanıtıcısı dışında SQL_DIAG_DYNAMIC_FUNCTION SQLGetDiagField çağrılması SQL_ERROR döndürür. SQLExecute veya SQLExecDirectçağrısından önce bu alanın değeri tanımlanmamıştır.
SQL_DIAG_DYNAMIC_FUNCTION_CODE SQLINTEGER Bu, temel alınan işlev tarafından yürütülen SQL deyimini açıklayan sayısal bir koddur. (Belirli bir değer için bu bölümün devamında yer alan "Dinamik İşlev Alanlarının Değerleri" bölümüne bakın.) Bu alanın içeriği yalnızca deyim tanıtıcıları için tanımlanır ve yalnızca SQLExecute, SQLExecDirectveya SQLMoreResultsçağrısından sonra tanımlanır. SQLGetDiagFieldDiagIdentifier deyim tanıtıcısı dışında SQL_DIAG_DYNAMIC_FUNCTION_CODE çağırmak SQL_ERROR döndürür. SQLExecute veya SQLExecDirectçağrısından önce bu alanın değeri tanımlanmamıştır.
SQL_DIAG_NUMBER SQLINTEGER Belirtilen tanıtıcı için kullanılabilen durum kayıtlarının sayısı.
SQL_DIAG_RETURNCODE SQLRETURN İşlev tarafından döndürülen kodu döndürür. İade kodlarının listesi için bkz. İade Kodları. Sürücünün SQL_DIAG_RETURNCODE uygulaması gerekmez; her zaman Sürücü Yöneticisi tarafından uygulanır. Tanıtıcıhenüz çağrılmadıysa, SQL_DIAG_RETURNCODE için SQL_SUCCESS döndürülür.
SQL_DIAG_ROW_COUNT SQLLEN SQLExecutetarafından gerçekleştirilen ekleme, silme veya güncelleştirmeden etkilenen satır sayısı, sqlexecdirect, SQLBulkOperationsveya SQLSetPos. bir imleç belirtimi yürütüldükten sonra sürücü tanımlıdır. Bu alanın içeriği yalnızca deyim tanıtıcıları için tanımlanır. sqlgetdiagFieldDiagIdentifier SQL_DIAG_ROW_COUNT dışında bir deyim tanıtıcısı ile çağırmak SQL_ERROR döndürür. Bu alandaki veriler, SQLRowCountRowCountPtr bağımsız değişkeninde de döndürülür. Bu alandaki veriler her tanılama olmayan işlev çağrısından sonra sıfırlanırken, sqlrowcount tarafından döndürülen satır sayısı, deyimi hazırlanmış veya ayrılmış duruma geri dönene kadar aynı kalır.

Kayıt Alanları

Aşağıdaki tabloda listelenen kayıt alanları DiagIdentifier bağımsız değişkenine eklenebilir.

DiagIdentifier Dönüş türü Döndürür
SQL_DIAG_CLASS_ORIGIN SQLCHAR * Bu kayıttaki SQLSTATE değerinin sınıf bölümünü tanımlayan belgeyi gösteren dize. Open Group ve ISO çağrı düzeyi arabirimi tarafından tanımlanan tüm SQLSTATEs için değeri "ISO 9075"tir. ODBC'ye özgü SQLSTAT'lar (SQLSTATE sınıfı "IM" olan herkes) için değeri "ODBC 3.0"dır.
SQL_DIAG_COLUMN_NUMBER SQLINTEGER SQL_DIAG_ROW_NUMBER alanı bir satır kümesinde veya parametre kümesinde geçerli bir satır numarasıysa, bu alan sonuç kümesindeki sütun numarasını veya parametre kümesindeki parametre numarasını temsil eden değeri içerir. Sonuç kümesi sütun numaraları her zaman 1'de başlar; Bu durum kaydı bir yer işareti sütunuyla ilgiliyse, alan sıfır olabilir. Parametre numaraları 1'de başlar. Durum kaydı bir sütun numarası veya parametre numarasıyla ilişkilendirilmemişse SQL_NO_COLUMN_NUMBER değerine sahiptir. Sürücü, bu kaydın ilişkili olduğu sütun numarasını veya parametre numarasını belirleyemezse, bu alanın değeri SQL_COLUMN_NUMBER_UNKNOWN.

Bu alanın içeriği yalnızca deyim tanıtıcıları için tanımlanır.
SQL_DIAG_CONNECTION_NAME SQLCHAR * Tanılama kaydının ilişkili olduğu bağlantının adını gösteren dize. Bu alan sürücü tanımlıdır. Ortam tanıtıcısıyla ilişkili tanılama veri yapıları ve herhangi bir bağlantıyla ilişkili olmayan tanılamalar için bu alan sıfır uzunlukta bir dizedir.
SQL_DIAG_MESSAGE_TEXT SQLCHAR * Hata veya uyarıyla ilgili bilgilendirme iletisi. Bu alan, Tanılama İletileri'nde açıklandığı gibi biçimlendirilir. Tanılama iletisi metni için uzunluk üst sınırı yoktur.
SQL_DIAG_NATIVE SQLINTEGER Sürücüye/veri kaynağına özgü yerel hata kodu. Yerel hata kodu yoksa, sürücü 0 döndürür.
SQL_DIAG_ROW_NUMBER SQLLEN Bu alan, satır kümesindeki satır numarasını veya durum kaydının ilişkilendirildiği parametre kümesindeki parametre numarasını içerir. Satır numaraları ve parametre numaraları 1 ile başlar. Bu durum kaydı bir satır numarası veya parametre numarasıyla ilişkilendirilmemişse, bu alan SQL_NO_ROW_NUMBER değerine sahiptir. Sürücü, bu kaydın ilişkili olduğu satır numarasını veya parametre numarasını belirleyemezse, bu alanın değeri SQL_ROW_NUMBER_UNKNOWN.

Bu alanın içeriği yalnızca deyim tanıtıcıları için tanımlanır.
SQL_DIAG_SERVER_NAME SQLCHAR * Tanılama kaydının ilişkili olduğu sunucu adını gösteren dize. SQL_DATA_SOURCE_NAME seçeneğiyle SQLGetInfo çağrısı için döndürülen değerle aynıdır. Ortam tanıtıcısıyla ilişkili tanılama veri yapıları ve herhangi bir sunucuyla ilişkili olmayan tanılamalar için bu alan sıfır uzunlukta bir dizedir.
SQL_DIAG_SQLSTATE SQLCHAR * Beş karakterli bir SQLSTATE tanılama kodu. Daha fazla bilgi için bkz. sqlstates.
SQL_DIAG_SUBCLASS_ORIGIN SQLCHAR * SQL_DIAG_CLASS_ORIGIN ile aynı biçime ve geçerli değerlere sahip, SQLSTATE kodunun alt sınıf bölümünün tanımlama bölümünü tanımlayan bir dize. "ODBC 3.0" döndürülen ODBC'ye özgü SQLSTATES şunları içerir:

01S00, 01S01, 01S02, 01S06, 01S07, 07S01, 08S01, 21S01, 21S02, 25S01, 25S02, 25S03, 42S01, 42S02, 42S11, 42S12, 42S21, 42S22, HY095, HY097, HY098, HY099, HY100, HY101, HY105, HY107, HY109, HY110, HY111, HYT00, HYT01, IM001, IM002, IM003, IM004, IM005, IM006, IM007, IM008, IM010, IM011, IM012.

Dinamik İşlev Alanlarının Değerleri

Aşağıdaki tabloda, sqlexecute veya sqlexecdirectçağrısı tarafından yürütülen her sql deyimi türüne uygulanan SQL_DIAG_DYNAMIC_FUNCTION ve SQL_DIAG_DYNAMIC_FUNCTION_CODE değerleri açıklanmaktadır. Sürücü, listelenenlere sürücü tanımlı değerler ekleyebilir.

SQL deyimi

Yürütülen
Değeri

SQL_DIAG_DYNAMIC_FUNCTION
Değeri

SQL_DIAG_DYNAMIC_FUNCTION_CODE
alter-domain-statement "ALTER DOMAIN" SQL_DIAG_ALTER_DOMAIN
alter-table-statement "ALTER TABLE" SQL_DIAG_ALTER_TABLE
onay-tanım "ONAY OLUŞTURMA" SQL_DIAG_CREATE_ASSERTION
Karakter kümesi tanımı "KARAKTER KÜMESI OLUŞTUR" SQL_DIAG_CREATE_CHARACTER_SET
harmanlama tanımı "CREATE COLLATION" SQL_DIAG_CREATE_COLLATION
etki alanı tanımı "ETKI ALANı OLUŞTUR" SQL_DIAG_CREATE_DOMAIN
create-index-statement "CREATE INDEX" SQL_DIAG_CREATE_INDEX
create-table-statement "CREATE TABLE" SQL_DIAG_CREATE_TABLE
create-view-statement "GÖRÜNÜM OLUŞTUR" SQL_DIAG_CREATE_VIEW
İmleç belirtimi "İMLEÇ SEÇ" SQL_DIAG_SELECT_CURSOR
delete-statement-positioned "DINAMIK SILME İMLECI" SQL_DIAG_DYNAMIC_DELETE_CURSOR
delete-statement-searched "DELETE WHERE" SQL_DIAG_DELETE_WHERE
drop-assertion-statement "DROP ASSERTION" SQL_DIAG_DROP_ASSERTION
drop-character-set-stmt "KARAKTER KÜMESINI BıRAK" SQL_DIAG_DROP_CHARACTER_SET
drop-collation-statement "DROP HARMANLAMA" SQL_DIAG_DROP_COLLATION
drop-domain-statement "DROP DOMAIN" SQL_DIAG_DROP_DOMAIN
drop-index-statement "DROP INDEX" SQL_DIAG_DROP_INDEX
drop-schema-statement "ŞEMAYı BıRAK" SQL_DIAG_DROP_SCHEMA
drop-table-statement "DROP TABLE" SQL_DIAG_DROP_TABLE
drop-translation-statement "DROP TRANSLATION" SQL_DIAG_DROP_TRANSLATION
drop-view-statement "DROP VIEW" SQL_DIAG_DROP_VIEW
grantstatement "GRANT" SQL_DIAG_GRANT
insert-statement "INSERT" SQL_DIAG_INSERT
ODBC-procedure-extension "ARA" arama SQL_DIAG_
revoke-statement "İPTAL ET" SQL_DIAG_REVOKE
Şema tanımı "ŞEMA OLUŞTUR" SQL_DIAG_CREATE_SCHEMA
Çeviri tanımı "ÇEVIRI OLUŞTUR" SQL_DIAG_CREATE_TRANSLATION
update-statement-positioned "DINAMIK GÜNCELLEŞTIRME İMLECI" SQL_DIAG_DYNAMIC_UPDATE_CURSOR
update-statement-searched "UPDATE WHERE" SQL_DIAG_UPDATE_WHERE
Bilinmeyen Boş dize SQL_DIAG_UNKNOWN_STATEMENT

Durum Kayıtlarının Sırası

Durum kayıtları, satır numarasına ve tanılama türüne göre bir sırayla konumlandırılır. Sürücü Yöneticisi, oluşturduğu durum kayıtlarının döndürüleceği son sırayı belirler. Sürücü, oluşturduğu durum kayıtlarının döndürüleceği son sırayı belirler.

Tanılama kayıtları hem Sürücü Yöneticisi hem de sürücü tarafından gönderiliyorsa, bunları sıralamaktan Sürücü Yöneticisi sorumludur.

İki veya daha fazla durum kaydı varsa, kayıtların sırası ilk olarak satır numarasına göre belirlenir. Aşağıdaki kurallar, tanılama kayıtlarının satıra göre sırasını belirlemek için geçerlidir:

  • Herhangi bir satıra karşılık olmayan kayıtlar, belirli bir satıra karşılık gelen kayıtların önünde görünür, çünkü SQL_NO_ROW_NUMBER -1 olarak tanımlanır.

  • Satır numarasının bilinmediği kayıtlar, SQL_ROW_NUMBER_UNKNOWN -2 olarak tanımlandığından diğer tüm kayıtların önünde görünür.

  • Belirli satırlara ait tüm kayıtlar için kayıtlar SQL_DIAG_ROW_NUMBER alanındaki değere göre sıralanır. Etkilenen ilk satırın tüm hataları ve uyarıları listelenir ve ardından etkilenen sonraki satırla ilgili tüm hatalar ve uyarılar vb. listelenir.

Not

SQLSTATE 01S01 (Satırda hata) bir ODBC 2*.x* sürücüsü tarafından döndürülürse veya SQLSTATE 01S01 (Satırda hata) döndürülürse ODBC 3*.x* Sürücü Yöneticisi tanılama kuyruğundaki durum kayıtlarını sıralamaz SQLExtendedFetch çağrıldığında veya SQLSetPos SQLExtendedFetchile konumlandırılmış bir imleçte çağrıldığında ODBC 3*.x* sürücüsü.

Her satırın içinde veya bir satıra karşılık olmayan veya satır numarasının bilinmediği tüm kayıtlar için ya da SQL_NO_ROW_NUMBER eşit bir satır numarasına sahip tüm kayıtlar için, listelenen ilk kayıt bir dizi sıralama kuralı kullanılarak belirlenir. İlk kayıt sonrasında, bir satırı etkileyen diğer kayıtların sırası tanımlanmamıştır. Bir uygulama, hataların ilk kayıt sonrasındaki uyarılardan önce geldiğini varsayamaz. Uygulamalar, bir işleve başarısız çağrı hakkında tam bilgi edinmek için tüm tanılama veri yapısını taramalıdır.

Aşağıdaki kurallar, bir satırdaki ilk kaydı belirlemek için kullanılır. En yüksek dereceye sahip kayıt ilk kayıttır. Kayıtları sıralarken kaydın kaynağı (Driver Manager, sürücü, ağ geçidi vb.) dikkate alınmaz.

  • Hataları Hataları açıklayan Durum kayıtları en yüksek dereceye sahiptir. Hataları sıralamak için aşağıdaki kurallar uygulanır:

    • bir işlem hatası veya olası işlem hatasının diğer tüm kayıtlara göre daha büyük olduğunu belirten kayıtlar.

    • İki veya daha fazla kayıt aynı hata koşulunu açıklıyorsa, Open Group CLI belirtimi (sınıf 03 ile HZ arası) tarafından tanımlanan SQLSTAT'lar ODBC ve sürücü tanımlı SQLSTAT'ların üzerine çıkar.

  • Uygulama Tanımlı Veri Değeri Yok Sürücü tanımlı Veri Yok değerlerini açıklayan Durum kayıtları (sınıf 02) en yüksek ikinci dereceye sahiptir.

  • Uyarıları açıklayan Uyarılar Durum kayıtları (sınıf 01) en düşük dereceye sahiptir. İki veya daha fazla kayıt aynı uyarı koşulunu açıklıyorsa, Open Group CLI belirtimi tarafından tanımlanan uyarı SQLSTAT'ları ODBC tanımlı ve sürücü tanımlı SQLSTAT'ları aşıyor.

Hakkında bilgi için Görmek
Tanılama veri yapısının birden çok alanını alma SQLGetDiagRec İşlevi

Ayrıca Bkz.

ODBC API Başvurusu
ODBC Üst Bilgi Dosyaları