Megosztás a következőn keresztül:


SQLGetDiagField függvény

megfelelőségi
Bevezetett verzió: ODBC 3.0 szabványmegfelelőség: ISO 92

összefoglaló
SQLGetDiagField a diagnosztikai adatstruktúra rekordjának aktuális értékét adja vissza (egy megadott leíróhoz társítva), amely hiba-, figyelmeztetés- és állapotinformációkat tartalmaz.

Szintaxis


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

Érvek

HandleType
[Bemenet] Leírótípus-azonosító, amely azt a leírótípust írja le, amelyhez diagnosztikára van szükség. Az alábbiak egyikének kell lennie:

  • SQL_HANDLE_DBC

  • SQL_HANDLE_DBC_INFO_TOKEN

  • SQL_HANDLE_DESC

  • SQL_HANDLE_ENV

  • SQL_HANDLE_STMT

SQL_HANDLE_DBC_INFO_TOKEN leírót csak az illesztőprogram-kezelő és az illesztőprogram használja. Az alkalmazások nem használhatják ezt a leírótípust. A SQL_HANDLE_DBC_INFO_TOKEN további információkért lásd: Connection-Pool Tudatosság fejlesztése ODBC-illesztőben.

kezelése
[Bemenet] A HandleTypeáltal jelzett típusú diagnosztikai adatstruktúra leírója. Ha HandleType SQL_HANDLE_ENV, Handle lehet megosztott vagy nem megosztott környezet leírója.

RecNumber
[Bemenet] Azt az állapotrekordot jelzi, amelyből az alkalmazás információt kér. Az állapotrekordok száma 1. Ha az DiagIdentifier argumentum a diagnosztikai fejléc bármely mezőjét jelzi, a rendszer figyelmen kívül hagyja RecNumber. Ha nem, akkor 0-nál többnek kell lennie.

DiagIdentifier
[Bemenet] A diagnosztikának azt a mezőjét jelzi, amelynek értékét vissza kell adni. További információ: "DiagIdentifier Argumentum" szakasz a Megjegyzések szakaszban.

DiagInfoPtr
[Kimenet] Mutasson egy pufferre, amelyben vissza szeretné adni a diagnosztikai adatokat. Az adattípus a DiagIdentifierértékétől függ. Ha DiagInfoPtr egész szám típusú, az alkalmazásoknak SQLULEN puffert kell használniuk, és a függvény meghívása előtt inicializálni kell az értéket 0 értékre, mivel egyes illesztőprogramok csak az alsó 32 bites vagy 16 bites puffert írhatják, és a magasabb rendű bitet változatlanul hagyhatják.

Ha DiagInfoPtr NULL értékű, StringLengthPtr továbbra is visszaadja a DiagInfoPtráltal mutatott pufferben elérhető bájtok teljes számát (a karakteradatok null-végpont karakterének kivételével).

BufferLength
[Bemenet] Ha DiagIdentifier ODBC által definiált diagnosztika, és DiagInfoPtr karaktersztringre vagy bináris pufferre mutat, ennek az argumentumnak *DiagInfoPtrhosszának kell lennie. Ha DiagIdentifier ODBC által definiált mező, és *a DiagInfoPtr egész szám, BufferLength figyelmen kívül hagyja. Ha a *DiagInfoPtr értéke Unicode-sztring (SQLGetDiagFieldWmeghívásakor), a BufferLength argumentumnak páros számnak kell lennie.

Ha DiagIdentifier egy illesztőprogram által definiált mező, az alkalmazás a mező jellegét jelzi a Driver Manager számára a BufferLength argumentum beállításával. BufferLength a következő értékekkel rendelkezhet:

  • Ha DiagInfoPtr egy karaktersztringre mutató mutató, BufferLength a sztring vagy SQL_NTS hossza.

  • Ha DiagInfoPtr egy bináris pufferre mutató mutató, az alkalmazás a SQL_LEN_BINARY_ATTR(hossz) makró eredményét BufferLength. Ez negatív értéket helyez el BufferLength.

  • Ha DiagInfoPtr nem karaktersztringre vagy bináris sztringre mutató mutató, akkor BufferLength SQL_IS_POINTER értékkel kell rendelkeznie.

  • Ha *DiagInfoPtr rögzített hosszúságú adattípust tartalmaz, BufferLength SQL_IS_INTEGER, SQL_IS_UINTEGER, SQL_IS_SMALLINT vagy SQL_IS_USMALLINT.

StringLengthPtr
[Kimenet] Mutasson arra a pufferre, amelyben a *DiagInfoPtrértékben visszaadandó bájtok teljes száma (a null-végpont karakterhez szükséges bájtok kivételével) a karakteradatok esetében. Ha a visszaadható bájtok száma nagyobb vagy egyenlő, mint BufferLength, a *DiagInfoPtr szövegét a rendszer BufferLength értékre csonkolja, a nullmegadású karakter hosszával.

Visszatér

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_INVALID_HANDLE vagy SQL_NO_DATA.

Diagnosztika

SQLGetDiagField nem tesz közzé diagnosztikai rekordokat. A következő visszatérési értékeket használja a saját végrehajtásának eredményének jelentésére:

  • SQL_SUCCESS: A függvény sikeresen visszaadta a diagnosztikai adatokat.

  • SQL_SUCCESS_WITH_INFO: *DiagInfoPtr túl kicsi volt a kért diagnosztikai mező tárolásához. Ezért a diagnosztikai mező adatait csonkoltuk. Annak megállapításához, hogy csonkolás történt-e, az alkalmazásnak össze kell hasonlítania BufferLength a rendelkezésre álló bájtok tényleges számával, amelyet a *StringLengthPtr.

  • SQL_INVALID_HANDLE: Az HandleType és Handle által jelzett leíró nem volt érvényes.

  • SQL_ERROR: Az alábbiak egyike történt:

    • A DiagIdentifier argumentum nem volt érvényes érték.

    • A DiagIdentifier argumentum SQL_DIAG_CURSOR_ROW_COUNT, SQL_DIAG_DYNAMIC_FUNCTION, SQL_DIAG_DYNAMIC_FUNCTION_CODE vagy SQL_DIAG_ROW_COUNT volt, de Leíró nem volt utasításleíró. (Az Illesztőprogram-kezelő visszaadja ezt a diagnosztikát.)

    • A RecNumber argumentum negatív vagy 0 volt, amikor DiagIdentifier egy diagnosztikai rekordból származó mezőt jelzett. RecNumber a fejlécmezők figyelmen kívül hagyják.

    • A kért érték egy karaktersztring volt, és BufferLength nullánál kisebb volt.

    • Aszinkron értesítés használatakor a leíró aszinkron művelete nem fejeződött be.

  • SQL_NO_DATA: RecNumber nagyobb volt, mint a leíróban megadott leíróhoz tartozó diagnosztikai rekordok száma. A függvény SQL_NO_DATA ad vissza minden pozitív RecNumber, ha nincsenek diagnosztikai rekordok Handle.

Megjegyzések

Egy alkalmazás általában meghívja SQLGetDiagField, hogy megvalósítsa a három cél egyikét:

  1. Ha egy függvényhívás SQL_ERROR vagy SQL_SUCCESS_WITH_INFO (vagy SQL_NEED_DATA SQLBrowseConnect függvényhez) adott hiba- vagy figyelmeztetési információkat szeretne kapni.

  2. Az adatforrás azon sorainak számának meghatározásához, amelyeket a beszúrási, törlési vagy frissítési műveletek során érintett az SQLExecutehívása, SQLExecDirect, SQLBulkOperationsvagy SQLSetPos (a SQL_DIAG_ROW_COUNT fejlécmezőből), vagy az aktuális nyitott kurzorban található sorok számának meghatározásához, ha az illesztő meg tudja adni ezt az információt (a SQL_DIAG_CURSOR_ROW_COUNT fejlécmezőből).

  3. Az SQLExecDirect vagy SQLExecute hívása által végrehajtott függvény meghatározásához (a SQL_DIAG_DYNAMIC_FUNCTION és SQL_DIAG_DYNAMIC_FUNCTION_CODE fejlécmezőkből).

Az ODBC-függvények minden híváskor nulla vagy több diagnosztikai rekordot tehetnek közzé, így egy alkalmazás bármilyen ODBC-függvényhívás után meghívhatja SQLGetDiagField. Nincs korlátozva az egyszerre tárolható diagnosztikai rekordok száma. SQLGetDiagField csak a Handle argumentumban megadott diagnosztikai adatstruktúrához legutóbb társított diagnosztikai adatokat kéri le. Ha az alkalmazás nem SQLGetDiagField vagy SQLGetDiagRec, akkor az azonos leíróval rendelkező előző hívás diagnosztikai adatai elvesznek.

Az alkalmazások RecNumbernövekményével az összes diagnosztikai rekordot megvizsgálhatják, mindaddig, amíg SQLGetDiagField SQL_SUCCESS ad vissza. Az állapotrekordok száma a SQL_DIAG_NUMBER fejlécmezőben van feltüntetve. Az SQLGetDiagField hívásai nem strukturálódnak a fejléc- és rekordmezőkben. Az alkalmazás később újra meghívhatja SQLGetDiagField, hogy lekérjen egy mezőt egy rekordból, feltéve, hogy a diagnosztikai függvényektől eltérő függvény nem lett meghívva köztesen, ami rekordokat adna fel ugyanazon a leírón.

Az alkalmazások bármikor meghívhatják SQLGetDiagField, hogy bármely diagnosztikai mezőt visszaadjanak, kivéve SQL_DIAG_CURSOR_ROW_COUNT vagy SQL_DIAG_ROW_COUNT, amely SQL_ERROR ad vissza, ha Handle nem utasításkezelő. Ha bármely más diagnosztikai mező nincs meghatározva, az SQLGetDiagField hívása SQL_SUCCESS ad vissza (feltéve, hogy más diagnosztika nem történt), és a rendszer nem definiált értéket ad vissza a mezőhöz.

További információ: SqlGetDiagRec és SQLGetDiagField és Implementing SQLGetDiagRec és SQLGetDiagField.

Az aszinkron módon végrehajtotttól eltérő API meghívása HY010 "Függvényütemezési hiba" lesz. A hibarekord azonban nem kérhető le az aszinkron művelet befejeződése előtt.

HandleType argumentum

Minden leírótípushoz tartozhatnak diagnosztikai adatok. A HandleType argumentum az Leíróleírótípusát jelzi.

Egyes fejléc- és rekordmezők nem adhatók vissza környezet-, kapcsolat-, utasítás- és leíróleíró-leírókhoz. Azokat a leírókat, amelyekre egy mező nem alkalmazható, a "Fejlécmezők" és a "Rekordmezők" szakasz tartalmazza.

Ha HandleType SQL_HANDLE_ENV, a Handle lehet megosztott vagy nem megosztott környezet leírója.

Nincs olyan illesztőprogram-specifikus fejlécdiagnosztikai mező, amely környezeti leíróhoz lenne társítva.

A leírófogóponthoz definiált diagnosztikai fejlécmezők csak SQL_DIAG_NUMBER és SQL_DIAG_RETURNCODE.

DiagIdentifier argumentum

Ez az argumentum a diagnosztikai adatstruktúra által igényelt mező azonosítóját jelzi. Ha RecNumber értéke 1-nél nagyobb vagy egyenlő, a mezőben szereplő adatok a függvény által visszaadott diagnosztikai adatokat ismertetik. Ha RecNumber értéke 0, akkor a mező a diagnosztikai adatstruktúra fejlécében található, ezért a diagnosztikai adatokat visszaküldött függvényhíváshoz kapcsolódó adatokat tartalmazza, nem pedig a konkrét információkat.

Az illesztőprogramok a diagnosztikai adatstruktúra illesztőprogram-specifikus fejléc- és rekordmezőit határozhatják meg.

Egy ODBC 3*.x* odBC 2*.x* illesztővel dolgozó alkalmazás csak DiagIdentifier argumentummal tudja meghívni SQLGetDiagField 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, vagy SQL_DIAG_SQLSTATE. Az összes többi diagnosztikai mező SQL_ERROR fog visszaadni.

Fejlécmezők

Az alábbi táblázatban felsorolt fejlécmezők szerepelhetnek a DiagIdentifier argumentumban.

DiagIdentifier Visszatérési típus Visszatér
SQL_DIAG_CURSOR_ROW_COUNT SQLLEN Ez a mező a kurzor sorainak számát tartalmazza. Szemantikája az SQLGetInfo SQL_DYNAMIC_CURSOR_ATTRIBUTES2, SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2, SQL_KEYSET_CURSOR_ATTRIBUTES2 és SQL_STATIC_CURSOR_ATTRIBUTES2 információtípusától függ, amely jelzi, hogy mely sorok száma érhető el az egyes kurzortípusokhoz (a SQL_CA2_CRC_EXACT és SQL_CA2_CRC_APPROXIMATE bitekben).

A mező tartalma csak az utasításkezelőkhöz van definiálva, és csak azután, hogy SQLExecute, SQLExecDirectvagy SQLMoreResults lett meghívva. Ha SQLGetDiagField egy diagIdentifier a SQL_DIAG_CURSOR_ROW_COUNT nem utasításkezelőn, SQL_ERROR fog visszaadni.
SQL_DIAG_DYNAMIC_FUNCTION SQLCHAR * Ez egy sztring, amely a mögöttes függvény által végrehajtott SQL-utasítást írja le. (Konkrét értékekért tekintse meg a szakasz későbbi részében található "A dinamikus függvény mezőinek értékei" című szakaszt.) A mező tartalma csak utasításkezelőkhöz van definiálva, és csak az SQLExecute, az SQLExecDirectvagy az SQLMoreResultshívása után. Ha SQLGetDiagField egy SQL_DIAG_DYNAMIC_FUNCTION diagIdentifier hívása nem utasításkezelőn, SQL_ERROR fog visszaadni. A mező értéke nincs meghatározva az SQLExecute vagy SQLExecDirecthívása előtt.
SQL_DIAG_DYNAMIC_FUNCTION_CODE SQLINTEGER Ez egy numerikus kód, amely a mögöttes függvény által végrehajtott SQL-utasítást írja le. (Az adott értékről a szakasz későbbi részében található "A dinamikus függvény mezőinek értékei" című szakaszban talál további információt.) A mező tartalma csak utasításkezelőkhöz van definiálva, és csak az SQLExecute, az SQLExecDirectvagy az SQLMoreResultshívása után. Ha SQLGetDiagField egy SQL_DIAG_DYNAMIC_FUNCTION_CODE diagIdentifier hív meg, az SQL_ERROR. A mező értéke nincs meghatározva az SQLExecute vagy SQLExecDirecthívása előtt.
SQL_DIAG_NUMBER SQLINTEGER A megadott leíróhoz elérhető állapotrekordok száma.
SQL_DIAG_RETURNCODE SQLRETURN A függvény által visszaadott kód. A visszatérési kódok listáját a Visszatérési kódokcímű témakörben találja. Az illesztőprogramnak nem kell implementálnia SQL_DIAG_RETURNCODE; ezt mindig az Illesztőprogram-kezelő valósítja meg. Ha még nem hívott meg függvényt a Handle, SQL_SUCCESS lesz visszaadva a SQL_DIAG_RETURNCODE.
SQL_DIAG_ROW_COUNT SQLLEN Az SQLExecute, SQLExecDirect, SQLBulkOperationsvagy SQLSetPosáltal végrehajtott beszúrás, törlés vagy frissítés által érintett sorok száma. Az illesztőprogram egy kurzor specifikáció végrehajtása után van definiálva. A mező tartalma csak az utasításkezelőkhöz van definiálva. Ha SQLGetDiagField egy diagIdentifier a SQL_DIAG_ROW_COUNT nem utasításkezelőn, SQL_ERROR ad vissza. Az ebben a mezőben szereplő adatokat az SQLRowCountRowCountPtr argumentuma is visszaadja. A mező adatai minden nem diagnosztikai függvényhívás után alaphelyzetbe kerülnek, míg az SQLRowCount által visszaadott sorszám ugyanaz marad, amíg az utasítás vissza nem kerül az előkészített vagy lefoglalt állapotba.

Rekordmezők

Az alábbi táblázatban felsorolt rekordmezők szerepelhetnek a DiagIdentifier argumentumban.

DiagIdentifier Visszatérési típus Visszatér
SQL_DIAG_CLASS_ORIGIN SQLCHAR * Egy sztring, amely azt a dokumentumot jelzi, amely meghatározza az SQLSTATE-érték osztályrészét ebben a rekordban. Értéke "ISO 9075" az Open Group és az ISO hívásszintű interfész által meghatározott összes SQLSTATE-hez. AZ ODBC-specifikus SQLSTATE-k (amelyek SQLSTATE-osztálya "IM"), értéke "ODBC 3.0".
SQL_DIAG_COLUMN_NUMBER SQLINTEGER Ha a SQL_DIAG_ROW_NUMBER mező egy sorhalmaz vagy paraméterkészlet érvényes sorszáma, akkor ez a mező az eredményhalmaz oszlopszámát vagy a paraméterkészlet paraméterszámát jelöli. Az eredményhalmaz oszlopszámai mindig 1-nél kezdődnek; ha ez az állapotrekord egy könyvjelzőoszlopra vonatkozik, a mező lehet nulla. A paraméterszámok 1-nél kezdődnek. Az érték SQL_NO_COLUMN_NUMBER, ha az állapotrekord nincs oszlopszámhoz vagy paraméterszámhoz társítva. Ha az illesztő nem tudja meghatározni a rekordhoz társított oszlopszámot vagy paraméterszámot, akkor a mező értéke SQL_COLUMN_NUMBER_UNKNOWN.

A mező tartalma csak az utasításkezelőkhöz van definiálva.
SQL_DIAG_CONNECTION_NAME SQLCHAR * Egy sztring, amely annak a kapcsolatnak a nevét jelzi, amelyre a diagnosztikai rekord vonatkozik. Ez a mező illesztőprogram-definícióval van definiálva. A környezeti leíróhoz társított diagnosztikai adatstruktúrák és a kapcsolathoz nem kapcsolódó diagnosztikák esetében ez a mező egy nulla hosszúságú sztring.
SQL_DIAG_MESSAGE_TEXT SQLCHAR * Tájékoztató üzenet a hibáról vagy figyelmeztetésről. Ez a mező Diagnosztikai üzenetekcímű cikkben leírtak szerint van formázva. A diagnosztikai üzenet szövegének nincs maximális hossza.
SQL_DIAG_NATIVE SQLINTEGER Illesztőprogram-/adatforrás-specifikus natív hibakód. Ha nincs natív hibakód, az illesztőprogram 0 értéket ad vissza.
SQL_DIAG_ROW_NUMBER SQLLEN Ez a mező tartalmazza a sorhalmaz sorszámát, vagy azt a paraméterkészlet paraméterszámát, amelyhez az állapotrekord társítva van. A sorszámok és a paraméterszámok 1-vel kezdődnek. Ez a mező SQL_NO_ROW_NUMBER értéket tartalmaz, ha ez az állapotrekord nincs sorszámhoz vagy paraméterszámhoz társítva. Ha az illesztő nem tudja meghatározni a rekordhoz társított sorszámot vagy paraméterszámot, akkor a mező értéke SQL_ROW_NUMBER_UNKNOWN.

A mező tartalma csak az utasításkezelőkhöz van definiálva.
SQL_DIAG_SERVER_NAME SQLCHAR * Egy sztring, amely azt a kiszolgálónevet jelzi, amelyre a diagnosztikai rekord vonatkozik. Ugyanaz, mint az SQLGetInfo híváshoz visszaadott érték a SQL_DATA_SOURCE_NAME beállítással. A környezeti leíróhoz társított diagnosztikai adatstruktúrák és a kiszolgálóhoz nem kapcsolódó diagnosztikák esetében ez a mező egy nulla hosszúságú sztring.
SQL_DIAG_SQLSTATE SQLCHAR * Öt karakterből állhat az SQLSTATE diagnosztikai kód. További információ: SQLSTATEs.
SQL_DIAG_SUBCLASS_ORIGIN SQLCHAR * A SQL_DIAG_CLASS_ORIGIN formátummal és érvényes értékekkel rendelkező sztring, amely azonosítja az SQLSTATE-kód alosztályrészének meghatározó részét. Az ODBC-specifikus SQLSTATES, amelyhez az "ODBC 3.0" értéket adja vissza, az alábbiakat tartalmazza:

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.

A dinamikus függvénymezők értékei

Az alábbi táblázat az SQLExecute vagy SQLExecDirecthívásával végrehajtott SQL-utasítástípusokra vonatkozó SQL_DIAG_DYNAMIC_FUNCTION és SQL_DIAG_DYNAMIC_FUNCTION_CODE értékeit ismerteti. Az illesztőprogram hozzáadhatja az illesztőprogram által definiált értékeket a felsoroltakhoz.

SQL-utasítás

Végre
Érték

SQL_DIAG_DYNAMIC_FUNCTION
Érték

SQL_DIAG_DYNAMIC_FUNCTION_CODE
alter-domain-statement "ALTER DOMAIN" SQL_DIAG_ALTER_DOMAIN
alter-table-statement "ALTER TABLE" SQL_DIAG_ALTER_TABLE
helyességi definíciós "CREATE ASSERTION" SQL_DIAG_CREATE_ASSERTION
karakterkészlet-definíciós "KARAKTERKÉSZLET LÉTREHOZÁSA" SQL_DIAG_CREATE_CHARACTER_SET
rendezési definíciós "RENDEZÉS LÉTREHOZÁSA" SQL_DIAG_CREATE_COLLATION
tartománydefiníciós "TARTOMÁNY LÉTREHOZÁSA" SQL_DIAG_CREATE_DOMAIN
create-index-statement "INDEX LÉTREHOZÁSA" SQL_DIAG_CREATE_INDEX
create-table-statement "TÁBLA LÉTREHOZÁSA" SQL_DIAG_CREATE_TABLE
create-view-statement "NÉZET LÉTREHOZÁSA" SQL_DIAG_CREATE_VIEW
kurzor specifikációs "KURZOR KIJELÖLÉSE" SQL_DIAG_SELECT_CURSOR
delete-statement-positioned "DINAMIKUS TÖRLÉSI KURZOR" SQL_DIAG_DYNAMIC_DELETE_CURSOR
törlési utasításban keresve "DELETE 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
engedélyezési "GRANT" SQL_DIAG_GRANT
beszúrási utasítás "INSERT" SQL_DIAG_INSERT
ODBC-procedure-extension "HÍVÁS" SQL_DIAG_ HÍVÁS
visszavonási nyilatkozat "VISSZAVONÁS" SQL_DIAG_REVOKE
sémadefiníciós "SÉMA LÉTREHOZÁSA" SQL_DIAG_CREATE_SCHEMA
fordításdefiníciós "FORDÍTÁS LÉTREHOZÁSA" SQL_DIAG_CREATE_TRANSLATION
update-statement-positioned "DINAMIKUS FRISSÍTÉSI KURZOR" SQL_DIAG_DYNAMIC_UPDATE_CURSOR
update-statement-searched "UPDATE WHERE" SQL_DIAG_UPDATE_WHERE
Ismeretlen üres sztring SQL_DIAG_UNKNOWN_STATEMENT

Állapotrekordok sorrendje

Az állapotrekordok sorszám és a diagnosztika típusa alapján sorrendbe vannak helyezve. Az Illesztőprogram-kezelő határozza meg a végleges sorrendet, amelyben az általa létrehozott állapotrekordokat adja vissza. Az illesztő határozza meg, hogy milyen végső sorrendben adja vissza az általa létrehozott állapotrekordokat.

Ha a diagnosztikai rekordokat az Illesztőprogram-kezelő és az illesztőprogram is közzéteheti, az illesztőprogram-kezelő felelős a rendelésükért.

Ha két vagy több állapotrekord van, a rekordok sorrendjét először a sorszám határozza meg. A diagnosztikai rekordok sor szerinti sorrendjének meghatározására a következő szabályok vonatkoznak:

  • A sornak nem megfelelő rekordok egy adott sornak megfelelő rekordok előtt jelennek meg, mert a SQL_NO_ROW_NUMBER -1 értékre van definiálva.

  • Azok a rekordok, amelyeknél a sorszám ismeretlen, az összes többi rekord előtt jelennek meg, mivel SQL_ROW_NUMBER_UNKNOWN -2 értékre van definiálva.

  • Az adott sorokhoz tartozó összes rekord esetében a rekordok a SQL_DIAG_ROW_NUMBER mező értéke szerint vannak rendezve. Az első érintett sor összes hibája és figyelmeztetése megjelenik, majd a következő érintett sor összes hibája és figyelmeztetése stb.

Jegyzet

Az ODBC 3*.x* illesztőprogram-kezelő nem rendeli meg az állapotrekordokat a diagnosztikai várólistában, ha az SQLSTATE 01S01 (a sorban lévő hiba) egy ODBC 2*.x* illesztő által visszaadott, vagy ha az SQLSTATE 01S01 (sorbeli hiba) eredményül ad vissza ODBC 3*.x* illesztővel, ha SQLExtendedFetch van meghívva, vagy SQLSetPosSQLExtendedFetch.

Az egyes sorokban, illetve azon rekordoknál, amelyek nem egy sornak felelnek meg, vagy amelyeknél a sorszám ismeretlen, vagy az összes olyan rekord esetében, amelynek sorszáma megegyezik SQL_NO_ROW_NUMBER, az első felsorolt rekordot rendezési szabályok használatával határozzuk meg. Az első rekord után a sort érintő többi rekord sorrendje nincs meghatározva. Az alkalmazások nem feltételezik, hogy a hibák megelőzik az első rekord utáni figyelmeztetéseket. Az alkalmazásoknak át kell vizsgálniuk a teljes diagnosztikaiadat-struktúrát, hogy teljes információt kapjanak egy függvény sikertelen hívásáról.

A következő szabályok határozzák meg az első rekordot egy sorban. A legmagasabb ranggal rendelkező rekord az első rekord. A rekordok rangsorolása nem veszi figyelembe a rekordforrást (Illesztőprogram-kezelő, illesztőprogram, átjáró stb.).

  • hibák hibákat leíró állapotrekordok a legmagasabb rangot kapják. A rendszer a következő szabályokat alkalmazza a rendezési hibákra:

    • A tranzakciós hibát vagy lehetséges tranzakciós hibát jelző rekordok az összes többi rekordot is túllépik.

    • Ha két vagy több rekord ugyanazt a hibafeltételt írja le, akkor az Open Group CLI-specifikáció (03–HZ osztály) által definiált SQLSTATE-k túllépik az ODBC-t és az illesztőprogram által definiált SQLSTATE-ket.

  • Implementáció által definiált No Data Values Az illesztőprogram által definiált Nincs adatértékeket leíró állapotrekordok (02. osztály) a második legmagasabb rangsorban vannak.

  • figyelmeztetések figyelmeztetéseket leíró állapotrekordok (01. osztály) a legalacsonyabb rangot kapják. Ha két vagy több rekord ugyanazt a figyelmeztetési feltételt írja le, akkor az Open Group CLI specifikációja által meghatározott figyelmeztetési SQLSTATE-k túllépik az ODBC által definiált és az illesztőprogram által definiált SQLSTATE-ket.

További információ: Lát
Diagnosztikai adatstruktúra több mezőjének beszerzése SQLGetDiagRec függvény

Lásd még:

ODBC API-referencia
ODBC-fejlécfájlok