Dela via


SQLGetDiagField-funktion

Efterlevnad
Version introducerad: ODBC 3.0 Standardefterlevnad: ISO 92

Sammanfattning
SQLGetDiagField- returnerar det aktuella värdet för ett fält i en post i diagnostikdatastrukturen (associerad med ett angivet handtag) som innehåller fel-, varnings- och statusinformation.

Syntax


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

Argument

HandleType
[Indata] En identifierare för referenstyp som beskriver vilken typ av handtag som diagnostik krävs för. Måste vara något av följande:

  • SQL_HANDLE_DBC

  • SQL_HANDLE_DBC_INFO_TOKEN

  • SQL_HANDLE_DESC

  • SQL_HANDLE_ENV

  • SQL_HANDLE_STMT

SQL_HANDLE_DBC_INFO_TOKEN handtag används endast av Drivrutinshanteraren och drivrutinen. Program bör inte använda den här referenstypen. Mer information om SQL_HANDLE_DBC_INFO_TOKEN finns i Utveckla Connection-Pool Medvetenhet i en ODBC-drivrutin.

Hantera
[Indata] Ett handtag för diagnostikdatastrukturen, av den typ som anges av HandleType. Om HandleType- är SQL_HANDLE_ENV kan Hantera antingen vara en delad eller en odelad miljöreferens.

RecNumber
[Indata] Anger den statuspost som programmet söker information från. Statusposter numreras från 1. Om argumentet DiagIdentifier anger något fält i diagnostikhuvudet ignoreras RecNumber. Om inte, bör det vara mer än 0.

DiagIdentifier
[Indata] Anger fältet för diagnostiken vars värde ska returneras. Mer information finns i avsnittet "DiagIdentifier Argument" i "Kommentarer".

DiagInfoPtr
[Utdata] Pekare till en buffert där diagnostikinformationen ska returneras. Datatypen beror på värdet för DiagIdentifier. Om DiagInfoPtr är en heltalstyp bör program använda en buffert av SQLULEN och initiera värdet till 0 innan de anropar den här funktionen, eftersom vissa drivrutiner bara kan skriva den lägre 32-bitars eller 16-bitars bufferten och lämna biten i högre ordning oförändrad.

Om DiagInfoPtr är NULL returnerar StringLengthPtr fortfarande det totala antalet byte (exklusive null-avslutningstecken för teckendata) som är tillgängligt för att returnera i bufferten som DiagInfoPtr.

BufferLength
[Indata] Om DiagIdentifier är en ODBC-definierad diagnostik och DiagInfoPtr pekar på en teckensträng eller en binär buffert, bör det här argumentet vara längden på *DiagInfoPtr. Om DiagIdentifier är ett ODBC-definierat fält och *DiagInfoPtr är ett heltal ignoreras BufferLength. Om värdet i *DiagInfoPtr är en Unicode-sträng (när du anropar SQLGetDiagFieldW) måste argumentet BufferLength vara ett jämnt tal.

Om DiagIdentifier är ett drivrutinsdefinierat fält anger programmet fältets natur till Driver Manager genom att ange argumentet BufferLength. BufferLength kan ha följande värden:

  • Om DiagInfoPtr är en pekare till en teckensträng är BufferLength längden på strängen eller SQL_NTS.

  • Om DiagInfoPtr är en pekare till en binär buffert placerar programmet resultatet av makrot SQL_LEN_BINARY_ATTR(längd) i BufferLength. Detta placerar ett negativt värde i BufferLength.

  • Om DiagInfoPtr är en pekare till ett annat värde än en teckensträng eller binär sträng bör BufferLength ha värdet SQL_IS_POINTER.

  • Om *DiagInfoPtr innehåller en datatyp med fast längd är BufferLength SQL_IS_INTEGER, SQL_IS_UINTEGER, SQL_IS_SMALLINT eller SQL_IS_USMALLINT efter behov.

StringLengthPtr
[Utdata] Pekare till en buffert där det totala antalet byte (exklusive antalet byte som krävs för null-avslutningstecknet) ska returneras i *DiagInfoPtr, för teckendata. Om antalet byte som är tillgängliga att returnera är större än eller lika med BufferLengthtrunkeras texten i *DiagInfoPtr till BufferLength minus längden på ett null-avslutningstecken.

Returnerar

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_INVALID_HANDLE eller SQL_NO_DATA.

Diagnostik

SQLGetDiagField publicerar inte diagnostikposter för sig själv. Den använder följande returvärden för att rapportera resultatet av sin egen körning:

  • SQL_SUCCESS: Funktionen returnerade diagnostikinformation.

  • SQL_SUCCESS_WITH_INFO: *DiagInfoPtr var för liten för att innehålla det begärda diagnostikfältet. Därför trunkerades data i diagnostikfältet. För att fastställa att en trunkering har inträffat måste programmet jämföra BufferLength med det faktiska antalet tillgängliga byte, som skrivs till *StringLengthPtr.

  • SQL_INVALID_HANDLE: Handtaget som anges av HandleType och Handle var inte ett giltigt handtag.

  • SQL_ERROR: Något av följande inträffade:

    • Argumentet DiagIdentifier var inte ett av de giltiga värdena.

    • Argumentet DiagIdentifier var SQL_DIAG_CURSOR_ROW_COUNT, SQL_DIAG_DYNAMIC_FUNCTION, SQL_DIAG_DYNAMIC_FUNCTION_CODE eller SQL_DIAG_ROW_COUNT, men Handle var inte en instruktionsreferens. (Drivrutinshanteraren returnerar den här diagnostiken.)

    • Argumentet RecNumber var negativt eller 0 när DiagIdentifier angav ett fält från en diagnostikpost. RecNumber ignoreras för rubrikfält.

    • Det begärda värdet var en teckensträng och BufferLength var mindre än noll.

    • När du använde asynkrona meddelanden slutfördes inte den asynkrona åtgärden på handtaget.

  • SQL_NO_DATA: RecNumber var större än antalet diagnostikposter som fanns för referensen som anges i Handle. Funktionen returnerar också SQL_NO_DATA för positiva RecNumber- om det inte finns några diagnostikposter för Handle.

Kommentarer

Ett program anropar vanligtvis SQLGetDiagField för att uppnå något av tre mål:

  1. Hämta specifik fel- eller varningsinformation när ett funktionsanrop har returnerat SQL_ERROR eller SQL_SUCCESS_WITH_INFO (eller SQL_NEED_DATA för funktionen SQLBrowseConnect).

  2. För att fastställa antalet rader i datakällan som påverkades när infognings-, borttagnings- eller uppdateringsåtgärder utfördes med ett anrop till SQLExecute, SQLExecDirect, SQLBulkOperationseller SQLSetPos (från SQL_DIAG_ROW_COUNT rubrikfält) eller för att fastställa antalet rader som finns i den aktuella öppna markören, om drivrutinen kan ange den här informationen (från fältet SQL_DIAG_CURSOR_ROW_COUNT rubrik).

  3. För att avgöra vilken funktion som kördes av ett anrop till SQLExecDirect eller SQLExecute (från SQL_DIAG_DYNAMIC_FUNCTION- och SQL_DIAG_DYNAMIC_FUNCTION_CODE-huvudfälten).

Alla ODBC-funktioner kan publicera noll eller fler diagnostikposter varje gång det anropas, så ett program kan anropa SQLGetDiagField efter valfritt ODBC-funktionsanrop. Det finns ingen gräns för hur många diagnostikposter som kan lagras samtidigt. SQLGetDiagField hämtar endast den diagnostikinformation som senast är associerad med den diagnostikdatastruktur som anges i argumentet Handle. Om programmet anropar en annan ODBC-funktion än SQLGetDiagField eller SQLGetDiagRecgår all diagnostikinformation från ett tidigare anrop med samma handtag förlorad.

Ett program kan skanna alla diagnostikposter genom att öka RecNumber, så länge SQLGetDiagField- returnerar SQL_SUCCESS. Antalet statusposter anges i fältet SQL_DIAG_NUMBER rubrik. Anrop till SQLGetDiagField är icke-förstörande för rubrik- och postfälten. Programmet kan anropa SQLGetDiagField igen senare för att hämta ett fält från en post, så länge en annan funktion än diagnostikfunktionerna inte har anropats under tiden, vilket skulle publicera poster på samma handtag.

Ett program kan anropa SQLGetDiagField- för att returnera valfritt diagnostikfält när som helst, förutom SQL_DIAG_CURSOR_ROW_COUNT eller SQL_DIAG_ROW_COUNT, som returnerar SQL_ERROR om Handle inte är en instruktionsreferens. Om något annat diagnostikfält är odefinierat returnerar anropet till SQLGetDiagField SQL_SUCCESS (förutsatt att ingen annan diagnostik påträffas) och ett odefinierat värde returneras för fältet.

Mer information finns i Using SQLGetDiagRec and SQLGetDiagField and Implementing SQLGetDiagRec and SQLGetDiagField.

Om du anropar ett annat API än det som körs asynkront genereras HY010 "Funktionssekvensfel". Det går dock inte att hämta felposten innan den asynkrona åtgärden har slutförts.

HandleType-argument

Varje referenstyp kan ha diagnostikinformation associerad med den. Argumentet HandleType anger referenstypen för Handle.

Vissa rubrik- och postfält kan inte returneras för miljö-, anslutnings-, instruktions- och deskriptorreferenser. De referenser för vilka ett fält inte är tillämpligt anges i avsnitten "Rubrikfält" och "Postfält".

Om HandleType är SQL_HANDLE_ENV kan Handle antingen vara en delad eller odelad miljöreferens.

Inga drivrutinsspecifika rubrikdiagnostikfält ska associeras med en miljöreferens.

De enda fälten för diagnostikrubriker som definieras för en beskrivningsreferens är SQL_DIAG_NUMBER och SQL_DIAG_RETURNCODE.

DiagIdentifier-argument

Det här argumentet anger identifieraren för det fält som krävs från diagnostikdatastrukturen. Om RecNumber är större än eller lika med 1, beskriver data i fältet diagnostikinformationen som returneras av en funktion. Om RecNumber är 0 finns fältet i rubriken för diagnostikdatastrukturen och innehåller därför data som hör till funktionsanropet som returnerade diagnostikinformationen, inte till den specifika informationen.

Drivrutiner kan definiera drivrutinsspecifika rubrik- och postfält i strukturen för diagnostikdata.

Ett ODBC 3*.x*-program som arbetar med en ODBC 2*.x*-drivrutin kan bara anropa SQLGetDiagField- med ett DiagIdentifier-argument argumentet 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, eller SQL_DIAG_SQLSTATE. Alla andra diagnostikfält returnerar SQL_ERROR.

Rubrikfält

Rubrikfälten som anges i följande tabell kan inkluderas i argumentet DiagIdentifier.

DiagIdentifier Returtyp Returnerar
SQL_DIAG_CURSOR_ROW_COUNT SQLLEN Det här fältet innehåller antalet rader i markören. Dess semantik beror på SQLGetInfo informationstyper SQL_DYNAMIC_CURSOR_ATTRIBUTES2, SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2, SQL_KEYSET_CURSOR_ATTRIBUTES2 och SQL_STATIC_CURSOR_ATTRIBUTES2, som anger vilka radantal som är tillgängliga för varje markörtyp (i SQL_CA2_CRC_EXACT och SQL_CA2_CRC_APPROXIMATE bitar).

Innehållet i det här fältet definieras endast för instruktionsreferenser och först efter SQLExecute, SQLExecDirecteller SQLMoreResults har anropats. Om du anropar SQLGetDiagField- med en DiagIdentifier- av SQL_DIAG_CURSOR_ROW_COUNT på annat än en instruktionsreferens returneras SQL_ERROR.
SQL_DIAG_DYNAMIC_FUNCTION SQLCHAR * Det här är en sträng som beskriver SQL-instruktionen som den underliggande funktionen körde. (Se "Värden för fälten Dynamisk funktion" senare i det här avsnittet för specifika värden.) Innehållet i det här fältet definieras endast för instruktionsreferenser och endast efter ett anrop till SQLExecute, SQLExecDirecteller SQLMoreResults. Om du anropar SQLGetDiagField- med en DiagIdentifier- av SQL_DIAG_DYNAMIC_FUNCTION på annat än en instruktionsreferens returneras SQL_ERROR. Värdet för det här fältet är odefinierat före ett anrop till SQLExecute eller SQLExecDirect.
SQL_DIAG_DYNAMIC_FUNCTION_CODE SQLINTEGER Det här är en numerisk kod som beskriver SQL-instruktionen som kördes av den underliggande funktionen. (Se "Värden för fälten för dynamisk funktion" senare i det här avsnittet för specifikt värde.) Innehållet i det här fältet definieras endast för instruktionsreferenser och endast efter ett anrop till SQLExecute, SQLExecDirecteller SQLMoreResults. Om du anropar SQLGetDiagField- med en DiagIdentifier- av SQL_DIAG_DYNAMIC_FUNCTION_CODE på annat än en instruktionsreferens returneras SQL_ERROR. Värdet för det här fältet är odefinierat före ett anrop till SQLExecute eller SQLExecDirect.
SQL_DIAG_NUMBER SQLINTEGER Antalet statusposter som är tillgängliga för det angivna handtaget.
SQL_DIAG_RETURNCODE SQLRETURN Returnera kod som returneras av funktionen. En lista över returkoder finns i Returkoder. Drivrutinen behöver inte implementera SQL_DIAG_RETURNCODE. det implementeras alltid av Driver Manager. Om ingen funktion ännu har anropats på Handlereturneras SQL_SUCCESS för SQL_DIAG_RETURNCODE.
SQL_DIAG_ROW_COUNT SQLLEN Antalet rader som påverkas av en infogning, borttagning eller uppdatering som utförs av SQLExecute, SQLExecDirect, SQLBulkOperationseller SQLSetPos. Den är drivrutinsdefinierad efter att en markörspecifikation har körts. Innehållet i det här fältet definieras endast för instruktionsreferenser. Om du anropar SQLGetDiagField med en DiagIdentifier- av SQL_DIAG_ROW_COUNT på annat än en instruktionsreferens returneras SQL_ERROR. Data i det här fältet returneras också i argumentet RowCountPtr för SQLRowCount. Data i det här fältet återställs efter varje icke-diagnostiskt funktionsanrop, medan radantalet som returneras av SQLRowCount- förblir detsamma tills instruktionen har angetts tillbaka till det förberedda eller allokerade tillståndet.

Postfält

Postfälten som anges i följande tabell kan inkluderas i argumentet DiagIdentifier.

DiagIdentifier Returtyp Returnerar
SQL_DIAG_CLASS_ORIGIN SQLCHAR * En sträng som anger det dokument som definierar klassdelen av SQLSTATE-värdet i den här posten. Dess värde är "ISO 9075" för alla SQLSTATE:er som definieras av open group och ISO-gränssnitt på anropsnivå. För ODBC-specifika SQLSTATEs (alla vars SQLSTATE-klass är "IM" är dess värde "ODBC 3.0".
SQL_DIAG_COLUMN_NUMBER SQLINTEGER Om fältet SQL_DIAG_ROW_NUMBER är ett giltigt radnummer i en raduppsättning eller en uppsättning parametrar innehåller det här fältet det värde som representerar kolumnnumret i resultatuppsättningen eller parameternumret i uppsättningen parametrar. Kolumnnummer för resultatuppsättningar börjar alltid vid 1; Om den här statusposten avser en bokmärkeskolumn kan fältet vara noll. Parameternummer börjar vid 1. Den har värdet SQL_NO_COLUMN_NUMBER om statusposten inte är associerad med ett kolumnnummer eller parameternummer. Om drivrutinen inte kan fastställa det kolumnnummer eller parameternummer som posten är associerad med, har det här fältet värdet SQL_COLUMN_NUMBER_UNKNOWN.

Innehållet i det här fältet definieras endast för instruktionsreferenser.
SQL_DIAG_CONNECTION_NAME SQLCHAR * En sträng som anger namnet på anslutningen som diagnostikposten relaterar till. Det här fältet är drivrutinsdefinierat. För diagnostikdatastrukturer som är associerade med miljöhandtaget och för diagnostik som inte relaterar till någon anslutning är det här fältet en sträng med noll längd.
SQL_DIAG_MESSAGE_TEXT SQLCHAR * Ett informationsmeddelande om felet eller varningen. Det här fältet är formaterat enligt beskrivningen i Diagnostikmeddelanden. Det finns ingen maximal längd på texten för diagnostikmeddelandet.
SQL_DIAG_NATIVE SQLINTEGER En drivrutins-/datakällspecifik intern felkod. Om det inte finns någon intern felkod returnerar drivrutinen 0.
SQL_DIAG_ROW_NUMBER SQLLEN Det här fältet innehåller radnumret i raduppsättningen eller parameternumret i uppsättningen parametrar som statusposten är associerad med. Radnummer och parameternummer börjar med 1. Det här fältet har värdet SQL_NO_ROW_NUMBER om den här statusposten inte är associerad med ett radnummer eller parameternummer. Om drivrutinen inte kan fastställa radnumret eller parameternumret som posten är associerad med, har det här fältet värdet SQL_ROW_NUMBER_UNKNOWN.

Innehållet i det här fältet definieras endast för instruktionsreferenser.
SQL_DIAG_SERVER_NAME SQLCHAR * En sträng som anger servernamnet som diagnostikposten relaterar till. Det är samma som värdet som returneras för ett anrop till SQLGetInfo- med alternativet SQL_DATA_SOURCE_NAME. För diagnostikdatastrukturer som är associerade med miljöhandtaget och för diagnostik som inte relaterar till någon server är det här fältet en sträng med noll längd.
SQL_DIAG_SQLSTATE SQLCHAR * En SQLSTATE-diagnostikkod med fem tecken. Mer information finns i SQLSTATEs.
SQL_DIAG_SUBCLASS_ORIGIN SQLCHAR * En sträng med samma format och giltiga värden som SQL_DIAG_CLASS_ORIGIN, som identifierar den definierande delen av underklassdelen av SQLSTATE-koden. De ODBC-specifika SQLSTATES som "ODBC 3.0" returneras för innehåller följande:

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.

Värden för fälten för dynamisk funktion

I följande tabell beskrivs värdena för SQL_DIAG_DYNAMIC_FUNCTION och SQL_DIAG_DYNAMIC_FUNCTION_CODE som gäller för varje typ av SQL-instruktion som körs av ett anrop till SQLExecute eller SQLExecDirect. Drivrutinen kan lägga till drivrutinsdefinierade värden i de angivna värdena.

SQL-instruktion

avrättad
Värdet för

SQL_DIAG_DYNAMIC_FUNCTION
Värdet för

SQL_DIAG_DYNAMIC_FUNCTION_CODE
alter-domain-statement "ÄNDRA DOMÄN" SQL_DIAG_ALTER_DOMAIN
alter-table-statement "ALTER TABLE" SQL_DIAG_ALTER_TABLE
"SKAPA FÖRSÄKRAN" SQL_DIAG_CREATE_ASSERTION
"SKAPA TECKENUPPSÄTTNING" SQL_DIAG_CREATE_CHARACTER_SET
sorteringsdefinition "SKAPA SORTERING" SQL_DIAG_CREATE_COLLATION
domändefinition "SKAPA DOMÄN" SQL_DIAG_CREATE_DOMAIN
create-index-statement "SKAPA INDEX" SQL_DIAG_CREATE_INDEX
create-table-statement "SKAPA TABELL" SQL_DIAG_CREATE_TABLE
create-view-statement "SKAPA VY" SQL_DIAG_CREATE_VIEW
"VÄLJ MARKÖR" SQL_DIAG_SELECT_CURSOR
"DYNAMISK BORTTAGNINGSMARKÖR" SQL_DIAG_DYNAMIC_DELETE_CURSOR
"TA BORT VAR" SQL_DIAG_DELETE_WHERE
drop-assertion-statement "DROP ASSERTION" SQL_DIAG_DROP_ASSERTION
drop-character-set-stmt "SLÄPP TECKENUPPSÄTTNING" SQL_DIAG_DROP_CHARACTER_SET
drop-collation-statement "SLÄPP SORTERING" SQL_DIAG_DROP_COLLATION
drop-domain-statement "SLÄPP DOMÄN" SQL_DIAG_DROP_DOMAIN
drop-index-statement "DROP INDEX" SQL_DIAG_DROP_INDEX
drop-schema-statement "SLÄPP SCHEMA" SQL_DIAG_DROP_SCHEMA
drop-table-statement "DROP TABLE" SQL_DIAG_DROP_TABLE
drop-translation-statement "SLÄPP ÖVERSÄTTNING" SQL_DIAG_DROP_TRANSLATION
drop-view-statement "DROP VIEW" SQL_DIAG_DROP_VIEW
"GRANT" SQL_DIAG_GRANT
insert-statement "INSERT" SQL_DIAG_INSERT
ODBC-procedure-extension "SAMTAL" SQL_DIAG_ SAMTAL
revoke-statement "ÅTERKALLA" SQL_DIAG_REVOKE
schemadefinition "SKAPA SCHEMA" SQL_DIAG_CREATE_SCHEMA
översättningsdefinition "SKAPA ÖVERSÄTTNING" SQL_DIAG_CREATE_TRANSLATION
"DYNAMISK UPPDATERINGSMARKÖR" SQL_DIAG_DYNAMIC_UPDATE_CURSOR
update-statement-searched "UPPDATERA VAR" SQL_DIAG_UPDATE_WHERE
Okänd tom sträng SQL_DIAG_UNKNOWN_STATEMENT

Sekvens med statusposter

Statusposter placeras i en sekvens baserat på radnummer och typ av diagnostik. Drivrutinshanteraren avgör i vilken ordning statusposter som genereras ska returneras. Drivrutinen avgör i vilken ordning statusposter som genereras ska returneras.

Om diagnostikposter publiceras av både Drivrutinshanteraren och drivrutinen ansvarar drivrutinshanteraren för att beställa dem.

Om det finns två eller flera statusposter bestäms sekvensen för posterna först av radnummer. Följande regler gäller för att fastställa sekvensen av diagnostikposter per rad:

  • Poster som inte motsvarar någon rad visas framför poster som motsvarar en viss rad, eftersom SQL_NO_ROW_NUMBER definieras som -1.

  • Poster som radnumret är okänt för visas framför alla andra poster, eftersom SQL_ROW_NUMBER_UNKNOWN har definierats som -2.

  • För alla poster som gäller specifika rader sorteras posterna efter värdet i fältet SQL_DIAG_ROW_NUMBER. Alla fel och varningar för den första raden som påverkas visas och sedan visas alla fel och varningar för nästa rad som påverkas och så vidare.

Not

ODBC 3*.x* Driver Manager beställer inte statusposter i diagnostikkön om SQLSTATE 01S01 (fel i rad) returneras av en ODBC 2*.x*-drivrutin eller om SQLSTATE 01S01 (fel i rad) returneras av en ODBC 3*.x* drivrutin när SQLExtendedFetch anropas eller SQLSetPos anropas på en markör som har placerats med SQLExtendedFetch.

Inom varje rad, eller för alla poster som inte motsvarar en rad eller som radnumret är okänt för, eller för alla poster med ett radnummer som är lika med SQL_NO_ROW_NUMBER, bestäms den första posten i listan med hjälp av en uppsättning sorteringsregler. Efter den första posten är ordningen på de andra posterna som påverkar en rad odefinierad. Ett program kan inte anta att fel föregår varningar efter den första posten. Program bör genomsöka hela diagnostikdatastrukturen för att få fullständig information om ett misslyckat anrop till en funktion.

Följande regler används för att fastställa den första posten i en rad. Posten med den högsta rangordningen är den första posten. Källan till en post (Driver Manager, drivrutin, gateway och så vidare) beaktas inte vid rangordning av poster.

  • Fel statusposter som beskriver fel har den högsta rangordningen. Följande regler tillämpas på sorteringsfel:

    • Poster som indikerar ett transaktionsfel eller ett eventuellt transaktionsfel överträffar alla andra poster.

    • Om två eller flera poster beskriver samma felvillkor överträffar SQLSTATEs som definierats av CLI-specifikationen för öppen grupp (klasser 03 till HZ) ODBC- och drivrutinsdefinierade SQLSTATEs.

  • Implementeringsdefinierade inga datavärden statusposter som beskriver drivrutinsdefinierade inga datavärden (klass 02) har den näst högsta rangordningen.

  • Varningar Statusposter som beskriver varningar (klass 01) har den lägsta rangordningen. Om två eller flera poster beskriver samma varningsvillkor överträffar varnings-SQLSTATEs som definierats av CLI-specifikationen för öppen grupp ODBC-definierade och drivrutinsdefinierade SQLSTATEs.

Mer information om Se
Hämta flera fält i en diagnostikdatastruktur SQLGetDiagRec-funktion

Se även

ODBC API-referens
ODBC-huvudfiler