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.
[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, alePopisovač 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ů:
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).
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).
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 |
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" | SQL_DIAG_DROP_COLLATION |
drop-domain-statement | "DROP DOMAIN" | SQL_DIAG_DROP_DOMAIN |
|
"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" | 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.
Související funkce
Informace o | Vidět |
---|---|
Získání více polí struktury diagnostických dat | funkce SQLGetDiagRec |
Viz také
Referenční
soubory hlaviček ODBC