Sdílet prostřednictvím


FUNKCE SQLGetDiagField

shoda
Zavedená verze: Dodržování standardů ODBC 3.0: ISO 92

souhrnu
SQLGetDiagField vrátí aktuální hodnotu pole záznamu struktury diagnostických dat (přidružené k zadanému popisovači), která obsahuje informace o chybě, upozornění a stavu.

Syntax


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

Argumenty

HandleType
[Vstup] Identifikátor typu popisovače, který popisuje typ popisovače, pro který se vyžaduje diagnostika. Musí to být jedna z těchto věcí:

  • SQL_HANDLE_DBC

  • SQL_HANDLE_DBC_INFO_TOKEN

  • SQL_HANDLE_DESC

  • SQL_HANDLE_ENV

  • SQL_HANDLE_STMT

SQL_HANDLE_DBC_INFO_TOKEN popisovač používá pouze Správce ovladačů a ovladač. Aplikace by neměly používat tento typ popisovače. Další informace o SQL_HANDLE_DBC_INFO_TOKEN naleznete v tématu Vývoj Connection-Pool povědomí o ovladači ODBC.

popisovač
[Vstup] Popisovač struktury diagnostických dat typu označený HandleType. Pokud popisovač SQL_HANDLE_ENV, popisovač může být sdílený nebo nesdílený popisovač prostředí.

RecNumber
[Vstup] Označuje záznam stavu, ze kterého aplikace hledá informace. Záznamy o stavu jsou očíslovány od 1. Pokud argument DiagIdentifier indikuje jakékoli pole hlavičky diagnostiky, RecNumber bude ignorován. Pokud ne, měla by být větší než 0.

DiagIdentifier
[Vstup] Určuje pole diagnostiky, jejíž hodnota se má vrátit. Další informace najdete v části "DiagIdentifier Argument" v části Komentáře.

DiagInfoPtr
[Výstup] Ukazatel na vyrovnávací paměť, ve které se mají vrátit diagnostické informace. Datový typ závisí na hodnotě DiagIdentifier. Pokud DiagInfoPtr je celočíselného typu, měly by aplikace použít vyrovnávací paměť SQLULEN a inicializovat hodnotu na 0 před voláním této funkce, protože některé ovladače můžou zapisovat pouze nižší 32bitovou nebo 16bitovou verzi vyrovnávací paměti a ponechat bit s vyšším pořadím beze změny.

Pokud DiagInfoPtr má hodnotu NULL, StringLengthPtr vrátí celkový počet bajtů (s výjimkou znaku ukončení null pro data znaků), který je k dispozici pro vrácení do vyrovnávací paměti odkazované DiagInfoPtr.

bufferLength
[Vstup] Pokud DiagIdentifier je diagnostika definovaná rozhraním ODBC a DiagInfoPtr odkazuje na řetězec znaku nebo binární vyrovnávací paměť, měl by tento argument být délka *DiagInfoPtr. Pokud DiagIdentifier je pole definované rozhraním ODBC a * DiagInfoPtr je celé číslo, BufferLength se ignoruje. Pokud je hodnota v *DiagInfoPtr řetězec Unicode (při volání SQLGetDiagFieldW), musí být argument BufferLength sudým číslem.

Pokud DiagIdentifier je pole definované ovladačem, aplikace indikuje povahu pole správci ovladačů nastavením argumentu BufferLength. BufferLength může mít následující hodnoty:

  • Pokud DiagInfoPtr je ukazatel na řetězec znaků, BufferLength je délka řetězce nebo SQL_NTS.

  • Pokud DiagInfoPtr je ukazatel na binární vyrovnávací paměť, aplikace umístí výsledek makra SQL_LEN_BINARY_ATTR(délka) do BufferLength. To umístí zápornou hodnotu v BufferLength.

  • Pokud DiagInfoPtr je ukazatel na jinou hodnotu než řetězec znaku nebo binární řetězec, BufferLength by měla mít hodnotu SQL_IS_POINTER.

  • Pokud *DiagInfoPtr obsahuje datový typ s pevnou délkou, BufferLength je podle potřeby SQL_IS_INTEGER, SQL_IS_UINTEGER, SQL_IS_SMALLINT nebo SQL_IS_USMALLINT.

StringLengthPtr
[Výstup] Ukazatel na vyrovnávací paměť, ve které se má vrátit celkový počet bajtů (s výjimkou počtu bajtů požadovaných pro znak ukončení s hodnotou null), který se má vrátit v *DiagInfoPtr, pro data znaků. Pokud je počet bajtů, které lze vrátit, větší nebo roven BufferLength, text v *DiagInfoPtr je zkrácen na BufferLength minus délku znaku ukončení s hodnotou null.

Návraty

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_INVALID_HANDLE nebo SQL_NO_DATA.

Diagnostika

SQLGetDiagField nezapisuje diagnostické záznamy pro sebe. K hlášení výsledku vlastního spuštění používá následující návratové hodnoty:

  • SQL_SUCCESS: Funkce úspěšně vrátila diagnostické informace.

  • SQL_SUCCESS_WITH_INFO: *DiagInfoPtr byl příliš malý, aby se do požadovaného diagnostického pole vydržovalo. Proto byla data v diagnostickém poli zkrácena. Chcete-li zjistit, že došlo ke zkrácení, aplikace musí porovnat BufferLength se skutečným počtem bajtů, které jsou k dispozici, což je zapsáno do *StringLengthPtr.

  • SQL_INVALID_HANDLE: Popisovač označený HandleType a Popisovač nebyl platným popisovačem.

  • SQL_ERROR: Došlo k jedné z následujících:

    • argument DiagIdentifier nebyl jednou z platných hodnot.

    • argument DiagIdentifier byl SQL_DIAG_CURSOR_ROW_COUNT, SQL_DIAG_DYNAMIC_FUNCTION, SQL_DIAG_DYNAMIC_FUNCTION_CODE nebo SQL_DIAG_ROW_COUNT, ale Popisovač nebyl popisovač příkazu. (Správce ovladačů vrátí tuto diagnostiku.)

    • argument RecNumber byl záporný nebo 0, když DiagIdentifier označil pole z diagnostického záznamu. pole záhlaví se ignoruje RecNumber.

    • Požadovaná hodnota byla řetězec znaků a BufferLength byla menší než nula.

    • Při použití asynchronního oznámení nebyla asynchronní operace popisovače dokončena.

  • SQL_NO_DATA: RecNumber byl větší než počet diagnostických záznamů, které existovaly pro popisovač zadaný v popisovači . Funkce také vrátí SQL_NO_DATA pro všechny kladné RecNumber, pokud neexistují žádné diagnostické záznamy propopisovač .

Komentáře

Aplikace obvykle volá SQLGetDiagField k dosažení jednoho ze tří cílů:

  1. Chcete-li získat konkrétní informace o chybě nebo upozornění, pokud volání funkce vrátilo SQL_ERROR nebo SQL_SUCCESS_WITH_INFO (nebo SQL_NEED_DATA pro funkci SQLBrowseConnect).

  2. Určení počtu řádků ve zdroji dat, které byly ovlivněny při operacích vložení, odstranění nebo aktualizace, byly provedeny s voláním SQLExecute, SQLExecDirect, SQLBulkOperationsnebo SQLSetPos (z pole záhlaví SQL_DIAG_ROW_COUNT) nebo určit počet řádků, které existují v aktuálním otevřeném kurzoru, pokud ovladač může poskytnout tyto informace (z pole záhlaví SQL_DIAG_CURSOR_ROW_COUNT).

  3. Chcete-li zjistit, která funkce byla provedena voláním SQLExecDirect nebo SQLExecute (z polí SQL_DIAG_DYNAMIC_FUNCTION a SQL_DIAG_DYNAMIC_FUNCTION_CODE hlaviček).

Každá funkce ODBC může publikovat nulové nebo více diagnostických záznamů pokaždé, když je volána, takže aplikace může volat SQLGetDiagField po každém volání funkce ODBC. Počet diagnostických záznamů, které je možné uložit najednou, není nijak omezen. SQLGetDiagField načte pouze diagnostické informace, které byly naposledy přidružené ke struktuře diagnostických dat zadané v argumentu Popisovač. Pokud aplikace volá jinou funkci ODBC než sqlGetDiagField nebo SQLGetDiagRec, všechny diagnostické informace z předchozího volání se stejným popisovačem ztratí.

Aplikace může kontrolovat všechny diagnostické záznamy zvýšením RecNumber , pokud SQLGetDiagField vrátí SQL_SUCCESS. Počet záznamů o stavu je uveden v poli záhlaví SQL_DIAG_NUMBER. Volání sqlGetDiagField nejsou strukturivní pro pole záhlaví a záznamu. Aplikace může volat SQLGetDiagField později načíst pole ze záznamu, pokud funkce jiná než diagnostické funkce nebyla volána dočasně, což by posílalo záznamy na stejném popisovači.

Aplikace může volat SQLGetDiagField vrátit jakékoli diagnostické pole kdykoli, s výjimkou SQL_DIAG_CURSOR_ROW_COUNT nebo SQL_DIAG_ROW_COUNT, která vrátí SQL_ERROR, pokud Popisovač není popisovač příkazu. Pokud není definováno jakékoli jiné diagnostické pole, volání sqlGetDiagField vrátí SQL_SUCCESS (za předpokladu, že není zjištěna žádná jiná diagnostika) a pro pole se vrátí nedefinovaná hodnota.

Další informace naleznete v tématu Použití sqlGetDiagRec a SQLGetDiagField a Implementace sqlGetDiagRec a SQLGetDiagField.

Volání jiného rozhraní API, než které se spouští asynchronně, vygeneruje HY010 "Chyba sekvence funkcí". Záznam chyby však nelze načíst před dokončením asynchronní operace.

HandleType Argument

Každý typ popisovače může mít přidružené diagnostické informace. Argument HandleType označuje typ popisovače popisovač.

Některá pole hlaviček a záznamů nelze vrátit pro popisovače prostředí, připojení, příkazu a popisovače. Popisovače, pro které pole není použitelné, jsou uvedené v následujících oddílech "Pole záhlaví" a "Pole záznamů".

Pokud handleType SQL_HANDLE_ENV, popisovač může být sdílený nebo nesdílený popisovač prostředí.

K popisovači prostředí by neměla být přidružena žádná diagnostická pole hlavičky specifická pro ovladač.

Jediná pole hlavičky diagnostiky definovaná pro popisovač jsou SQL_DIAG_NUMBER a SQL_DIAG_RETURNCODE.

DiagIdentifier Argument

Tento argument označuje identifikátor pole požadovaného ze struktury diagnostických dat. Pokud RecNumber je větší nebo roven 1, data v poli popisují diagnostické informace vrácené funkcí. Pokud RecNumber je 0, pole je v hlavičce struktury diagnostických dat, a proto obsahuje data týkající se volání funkce, která vrátila diagnostické informace, nikoli na konkrétní informace.

Ovladače mohou definovat pole hlaviček a záznamů specifických pro ovladače ve struktuře diagnostických dat.

Aplikace ODBC 3*.x* pracující s ovladačem ODBC 2*.x* bude moct volat SQLGetDiag Field pouze s argumentem DiagIdentifier argumentem 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, nebo SQL_DIAG_SQLSTATE. Všechna ostatní diagnostická pole vrátí SQL_ERROR.

Pole záhlaví

Pole záhlaví uvedená v následující tabulce mohou být zahrnuta do argumentu DiagIdentifier.

DiagIdentifier Návratový typ Návraty
SQL_DIAG_CURSOR_ROW_COUNT SQLLEN Toto pole obsahuje počet řádků v kurzoru. Jeho sémantika závisí na SQLGetInfo typy informací SQL_DYNAMIC_CURSOR_ATTRIBUTES2, SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2, SQL_KEYSET_CURSOR_ATTRIBUTES2 a SQL_STATIC_CURSOR_ATTRIBUTES2, které označují počet řádků, které jsou k dispozici pro každý typ kurzoru (v SQL_CA2_CRC_EXACT a SQL_CA2_CRC_APPROXIMATE bitů).

Obsah tohoto pole je definován pouze pro popisovače příkazů a pouze po SQLExecute, SQLExecDirectnebo SQLMoreResults byl volána. Volání sqlGetDiagField s DiagIdentifier SQL_DIAG_CURSOR_ROW_COUNT na jiném než popisovač příkazu vrátí SQL_ERROR.
SQL_DIAG_DYNAMIC_FUNCTION SQLCHAR * Jedná se o řetězec, který popisuje příkaz SQL, který se spustila základní funkce. (Konkrétní hodnoty najdete dále v této části v části Hodnoty polí dynamické funkce.) Obsah tohoto pole je definován pouze pro popisovače příkazů a pouze po volání SQLExecute, SQLExecDirectnebo SQLMoreResults. Volání sqlGetDiagField s DiagIdentifier SQL_DIAG_DYNAMIC_FUNCTION na jiném než popisovač příkazu vrátí SQL_ERROR. Hodnota tohoto pole není definována před voláním SQLExecute nebo SQLExecDirect.
SQL_DIAG_DYNAMIC_FUNCTION_CODE SQLINTEGER Jedná se o číselný kód, který popisuje příkaz SQL, který byl proveden základní funkcí. (Konkrétní hodnotu najdete dále v této části v části Hodnoty polí dynamické funkce.) Obsah tohoto pole je definován pouze pro popisovače příkazů a pouze po volání SQLExecute, SQLExecDirectnebo SQLMoreResults. Volání sqlGetDiagField s DiagIdentifier SQL_DIAG_DYNAMIC_FUNCTION_CODE na jiném než popisovač příkazu vrátí SQL_ERROR. Hodnota tohoto pole není definována před voláním SQLExecute nebo SQLExecDirect.
SQL_DIAG_NUMBER SQLINTEGER Počet záznamů o stavu, které jsou k dispozici pro zadaný popisovač.
SQL_DIAG_RETURNCODE SQLRETURN Vrátí kód vrácený funkcí. Seznam návratových kódů naleznete v tématu návratové kódy. Ovladač nemusí implementovat SQL_DIAG_RETURNCODE; je vždy implementován správcem ovladačů. Pokud vpopisovači ještě nebyla volána žádná funkce, SQL_SUCCESS se vrátí pro SQL_DIAG_RETURNCODE.
SQL_DIAG_ROW_COUNT SQLLEN Počet řádků ovlivněných vložením, odstraněním nebo aktualizací provedených sqlExecute, SQLExecDirect, SQLBulkOperationsnebo SQLSetPos. Je definován ovladač po provedení specifikace kurzoru . Obsah tohoto pole je definován pouze pro popisovače příkazů. Volání sqlGetDiagField s DiagIdentifier SQL_DIAG_ROW_COUNT na jiném než popisovač příkazu vrátí SQL_ERROR. Data v tomto poli jsou vrácena také v RowCountPtr argument SQLRowCount. Data v tomto poli se resetují po každém volání nediagnostikové funkce, zatímco počet řádků vrácený SQLRowCount zůstane stejný, dokud se příkaz nenastaví zpět do připraveného nebo přiděleného stavu.

Pole záznamů

Pole záznamů uvedená v následující tabulce mohou být zahrnuta do argumentu DiagIdentifier.

DiagIdentifier Návratový typ Návraty
SQL_DIAG_CLASS_ORIGIN SQLCHAR * Řetězec, který označuje dokument, který definuje část třídy hodnoty SQLSTATE v tomto záznamu. Jeho hodnota je "ISO 9075" pro všechny SQLSTATEs definované open group a rozhraním ISO na úrovni volání. Pro SQLSTATEs specifické pro ROZHRANÍ ODBC (všechny ty, jejichž třída SQLSTATE je "IM"), jeho hodnota je ODBC 3.0.
SQL_DIAG_COLUMN_NUMBER SQLINTEGER Pokud je pole SQL_DIAG_ROW_NUMBER platným číslem řádku v sadě řádků nebo sadou parametrů, obsahuje toto pole hodnotu, která představuje číslo sloupce v sadě výsledků nebo číslo parametru v sadě parametrů. Čísla sloupců sady výsledků vždy začínají číslem 1; Pokud se tento záznam stavu týká sloupce záložky, může být pole nula. Čísla parametrů začínají číslem 1. Má hodnotu SQL_NO_COLUMN_NUMBER, pokud záznam stavu není přidružený k číslu sloupce nebo číslu parametru. Pokud ovladač nemůže určit číslo sloupce nebo číslo parametru, ke kterému je tento záznam přidružený, má toto pole hodnotu SQL_COLUMN_NUMBER_UNKNOWN.

Obsah tohoto pole je definován pouze pro popisovače příkazů.
SQL_DIAG_CONNECTION_NAME SQLCHAR * Řetězec, který označuje název připojení, ke kterému se diagnostický záznam vztahuje. Toto pole je definované ovladačem. U diagnostických datových struktur přidružených k popisovači prostředí a pro diagnostiku, které nesouvisí s žádným připojením, je toto pole řetězec nulové délky.
SQL_DIAG_MESSAGE_TEXT SQLCHAR * Informační zpráva týkající se chyby nebo upozornění Toto pole je formátované podle popisu v diagnostické zprávy. Text diagnostické zprávy nemá žádnou maximální délku.
SQL_DIAG_NATIVE SQLINTEGER Nativní kód chyby specifické pro ovladač nebo zdroj dat. Pokud neexistuje žádný nativní kód chyby, ovladač vrátí hodnotu 0.
SQL_DIAG_ROW_NUMBER SQLLEN Toto pole obsahuje číslo řádku v sadě řádků nebo číslo parametru v sadě parametrů, ke kterým je přidružený záznam stavu. Čísla řádků a čísla parametrů začínají číslem 1. Toto pole má hodnotu SQL_NO_ROW_NUMBER, pokud tento záznam stavu není přidružený k číslu řádku nebo číslu parametru. Pokud ovladač nemůže určit číslo řádku nebo číslo parametru, ke kterému je tento záznam přidružený, má toto pole hodnotu SQL_ROW_NUMBER_UNKNOWN.

Obsah tohoto pole je definován pouze pro popisovače příkazů.
SQL_DIAG_SERVER_NAME SQLCHAR * Řetězec, který označuje název serveru, ke kterému se diagnostický záznam vztahuje. Je stejná jako hodnota vrácená pro volání SQLGetInfo s možností SQL_DATA_SOURCE_NAME. Pro struktury diagnostických dat přidružených k popisovači prostředí a pro diagnostiku, která nesouvisí s žádným serverem, je toto pole řetězcem nulové délky.
SQL_DIAG_SQLSTATE SQLCHAR * Diagnostický kód SQLSTATE s pěti znaky. Další informace naleznete v tématu SQLSTATEs.
SQL_DIAG_SUBCLASS_ORIGIN SQLCHAR * Řetězec se stejným formátem a platnými hodnotami jako SQL_DIAG_CLASS_ORIGIN, který identifikuje definující část části podtřídy kódu SQLSTATE. Funkce SQLSTATES specifické pro rozhraní ODBC, pro které je vrácena funkce ODBC 3.0, zahrnují následující:

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.

Hodnoty polí dynamické funkce

Následující tabulka popisuje hodnoty SQL_DIAG_DYNAMIC_FUNCTION a SQL_DIAG_DYNAMIC_FUNCTION_CODE, které platí pro každý typ příkazu SQL spouštěného voláním SQLExecute nebo SQLExecDirect. Ovladač může přidat hodnoty definované ovladačem do uvedených hodnot.

Příkaz SQL

vykonaný
Hodnota

SQL_DIAG_DYNAMIC_FUNCTION
Hodnota

SQL_DIAG_DYNAMIC_FUNCTION_CODE
alter-domain-statement "ALTER DOMAIN" SQL_DIAG_ALTER_DOMAIN
příkazu alter-table-statement "ALTER TABLE" SQL_DIAG_ALTER_TABLE
definice kontrolního výrazu "CREATE ASSERTION" SQL_DIAG_CREATE_ASSERTION
definice znakové sady "CREATE CHARACTER SET" (VYTVOŘIT ZNAKOVÉ SADY) SQL_DIAG_CREATE_CHARACTER_SET
definice kolace "VYTVOŘIT KOLACI" SQL_DIAG_CREATE_COLLATION
definice domény "CREATE DOMAIN" SQL_DIAG_CREATE_DOMAIN
create-index-statement "CREATE INDEX" SQL_DIAG_CREATE_INDEX
příkazu create-table-statement "CREATE TABLE" SQL_DIAG_CREATE_TABLE
create-view-statement "VYTVOŘIT ZOBRAZENÍ" SQL_DIAG_CREATE_VIEW
specifikace kurzoru "VYBRAT KURZOR" SQL_DIAG_SELECT_CURSOR
umístění příkazu delete "DYNAMICKÉ ODSTRANĚNÍ KURZORU" SQL_DIAG_DYNAMIC_DELETE_CURSOR
prohledané příkazy delete "ODSTRANIT WHERE" SQL_DIAG_DELETE_WHERE
drop-assertion-statement "DROP ASSERTION" SQL_DIAG_DROP_ASSERTION
drop-character-set-stmt "DROP CHARACTER SET" SQL_DIAG_DROP_CHARACTER_SET
drop-collation-statement "DROP COLLATION" 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 "DROP SCHEMA" 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
rozšíření ODBC pro proceduru "VOLAT" SQL_DIAG_ HOVOR
příkazu revoke "ODVOLAT" SQL_DIAG_REVOKE
definice schématu "CREATE SCHEMA" SQL_DIAG_CREATE_SCHEMA
definice překladu "VYTVOŘIT PŘEKLAD" SQL_DIAG_CREATE_TRANSLATION
umístění příkazu update "DYNAMICKÁ AKTUALIZACE KURZOR" SQL_DIAG_DYNAMIC_UPDATE_CURSOR
hledané příkazy update "UPDATE WHERE" SQL_DIAG_UPDATE_WHERE
Neznámý prázdný řetězec SQL_DIAG_UNKNOWN_STATEMENT

Posloupnost záznamů o stavu

Záznamy o stavu jsou umístěny v posloupnosti na základě čísla řádku a typu diagnostiky. Správce ovladačů určuje konečné pořadí, ve kterém má vrátit záznamy o stavu, které generuje. Ovladač určuje konečné pořadí, ve kterém má vrátit záznamy o stavu, které generuje.

Pokud jsou diagnostické záznamy vystaveny manažerem řidiče i řidičem, je manažer řidiče zodpovědný za jejich objednání.

Pokud existují dva nebo více stavových záznamů, pořadí záznamů se určuje jako první podle čísla řádku. Následující pravidla platí pro určení posloupnosti diagnostických záznamů podle řádku:

  • Záznamy, které neodpovídají žádnému řádku, se zobrazují před záznamy, které odpovídají určitému řádku, protože SQL_NO_ROW_NUMBER je definováno tak, aby bylo -1.

  • Záznamy, pro které je číslo řádku neznámé, se zobrazují před všemi ostatními záznamy, protože SQL_ROW_NUMBER_UNKNOWN je definováno tak, aby bylo -2.

  • U všech záznamů, které se týkají konkrétních řádků, se záznamy seřadí podle hodnoty v poli SQL_DIAG_ROW_NUMBER. Zobrazí se všechny chyby a upozornění prvního řádku, kterých se to týká, a pak všechny chyby a upozornění dalšího řádku, na který se to týká atd.

Poznámka

Správce ovladačů ODBC 3*.x* neřadí záznamy stavu ve frontě diagnostiky, pokud ovladač ODBC 01S01 (chyba v řádku) vrátí ovladač ODBC 2*.x* nebo pokud je vrácen sqlSTATE 01S01 (chyba v řádku) Ovladač ODBC 3*.x* při SQLExtendedFetch je volána nebo SQLSetPos je volána na kurzoru, který byl umístěn s SQLExtendedFetch.

V každém řádku nebo pro všechny záznamy, které neodpovídají řádku nebo pro které není číslo řádku neznámé, nebo pro všechny tyto záznamy s číslem řádku, který se rovná SQL_NO_ROW_NUMBER, je první uvedený záznam určen pomocí sady pravidel řazení. Po prvním záznamu není pořadí ostatních záznamů ovlivňujících řádek definováno. Aplikace nemůže předpokládat, že chyby předchází upozorněním po prvním záznamu. Aplikace by měly zkontrolovat úplnou strukturu diagnostických dat, aby získaly úplné informace o neúspěšném volání funkce.

Následující pravidla slouží k určení prvního záznamu v řádku. Záznam s nejvyšším pořadím je prvním záznamem. Zdroj záznamu (Driver Manager, driver, gateway atd.) se při řazení záznamů nepovažuje.

  • Chyby záznamy o stavu, které popisují chyby, mají nejvyšší pořadí. Při řazení chyb se použijí následující pravidla:

    • Záznamy, které označují selhání transakce nebo možné selhání transakce, seřadí všechny ostatní záznamy.

    • Pokud dva nebo více záznamů popisují stejný chybový stav, pak SQLSTATEs definované specifikací Rozhraní příkazového řádku Open Group (třídy 03 až HZ) odřadí rozhraní ODBC a ovladačem definované SQLSTATEs.

  • Implementované žádné datové hodnoty Záznamy o stavu, které popisují hodnoty no data definované ovladačem (třída 02) mají druhé nejvyšší pořadí.

  • upozornění záznamy o stavu popisující upozornění (třída 01) mají nejnižší pořadí. Pokud dva nebo více záznamů popisuje stejnou podmínku upozornění, pak upozornění SQLSTATEs definované specifikací Rozhraní příkazového řádku open group outrank ODBC-defined a driver-defined SQLSTATEs.

Informace o Vidět
Získání více polí struktury diagnostických dat funkce SQLGetDiagRec

Viz také

Referenční rozhraní ODBC API
soubory hlaviček ODBC