Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Megfelelőség
Bemutatott verzió: ODBC 3.0 szabványoknak megfelelés: ISO 92
Summary
Az SQLGetDiagRec több diagnikus rekord mezőjének aktuális értékeit adja vissza, amelyek hiba-, figyelmeztetés- és állapotinformációkat tartalmaznak. Az SQLGetDiagField-lel ellentétben, amely hívásonként egy diagnosztikai mezőt ad vissza, az SQLGetDiagRec több gyakran használt diagnikus rekordmezőt is visszaad, beleértve az SQLSTATE-et, a natív hibakódot és a diagnosztikai üzenet szövegét.
Syntax
SQLRETURN SQLGetDiagRec(
SQLSMALLINT HandleType,
SQLHANDLE Handle,
SQLSMALLINT RecNumber,
SQLCHAR * SQLState,
SQLINTEGER * NativeErrorPtr,
SQLCHAR * MessageText,
SQLSMALLINT BufferLength,
SQLSMALLINT * TextLengthPtr);
Arguments
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. További információért SQL_HANDLE_DBC_INFO_TOKEN lásd: Fejlődés Connection-Pool tudatosság egy ODBC meghajtóban.
Kezelőfelület
[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.
SQLState
[Kimenet] Mutató egy pufferre, amelyben öt karakteres SQLSTATE kódot (és a NULL-t végző) vissza lehet adni a diagnosztikai rekord RecNumber számára. Az első két karakter az osztályt jelzi; a következő három az alosztályt jelöli. Ez az információ a SQL_DIAG_SQLSTATE diagnosztikai területen található. További információ: SQLSTATEs.
NativeErrorPtr
[Kimenet] Mutató egy pufferre, amelyben vissza lehet adni a natív hibakódot, amely az adatforrásra jellemző. Ez az információ a SQL_DIAG_NATIVE diagnosztikai területen található.
Üzenetszöveg
[Kimenet] Mutató egy pufferre, ahol vissza lehet adni a diagnosztikai üzenet szövegláncot. Ez az információ a SQL_DIAG_MESSAGE_TEXT diagnosztikai területen található. A string formátumáról lásd: Diagnosztikai üzenetek.
Ha a MessageText NULL, a TextLengthPtr továbbra is visszaadja a MessageText által mutatott pufferben elérhető összes karakterszámot (kivéve a null-terminációs karaktert a karakteradatokhoz).
BufferLength
[Bemenet] A *MessageText puffer hossza karakterekben. A diagnosztikai üzenet szövegének nincs maximális hossza.
TextLengthPtr
[Kimenet] Mutató egy pufferre, amelyben vissza lehet adni a * MessageText formátumban vissza elérhető összes karakter számát (kivéve a null-terminációs karakterhez szükséges karakterek számát). Ha a visszatérhető karakterek száma nagyobb, mint a BufferLength, a *MessageText diagnosztikai üzenet szövege a null-terminációs karakter hosszát mínuszítva BufferLength-re rövidítik.
Returns
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_NO_DATA vagy SQL_INVALID_HANDLE.
Diagnostics
Az SQLGetDiagRec nem tesz közzé saját 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: A *MessageText puffer túl kicsi volt a kért diagnosztikai üzenet tárolására. Nem készültek diagnosztikai feljegyzések. Ahhoz, hogy megállapítsuk, hogy csonkítás történt-e, az alkalmazásnak össze kell hasonlítania a BufferLength-t a rendelkezésre álló bájtok tényleges számával, amelyet a *TextLengthPtr-re írnak.
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 RecNumber negatív vagy 0 volt.
BufferLength kevesebb volt, mint nulla.
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.
Comments
Egy alkalmazás általában akkor hívja az SQLGetDiagRec-et , ha egy korábbi ODBC függvény hívása SQL_ERROR vagy SQL_SUCCESS_WITH_INFO visszaadott. Azonban mivel bármely ODBC függvény minden híváskor nulla vagy több diagnosztikai rekordot tud megjeleníteni, az alkalmazás bármelyik ODBC függvényhívás után hívhatja SQLGetDiagRec-et . Egy alkalmazás többször is hívhatja az SQLGetDiagRec-et , hogy visszaadja a diagnosztikai adatszerkezet egyes vagy összes rekordját. Az ODBC nem szab korlátot arra, hogy hány diagnosztikai rekordot tárolhatnak egyszerre.
Az SQLGetDiagRec nem használható a diagnosztikai adatstruktúra fejlécéből származó mezők visszaadására. ( A RecNumber érvnek nagyobbnak kell lennie 0-nál.) Az alkalmazásnak erre a célra SQLGetDiagField-et kell hívnia.
Az SQLGetDiagRec csak a Handle argumentumban megadott kezelő legutóbb kapcsolódó diagnosztikai információkat kéri. Ha az alkalmazás más ODBC függvényt hív, kivéve az SQLGetDiagRec-et, SQLGetDiagField vagy SQLError-t, akkor az előző hívásokból származó diagnosztikai információk elvesznek ugyanazon a kezelőn.
Egy alkalmazás minden diagnosztikai rekordot képes szkennelni RecNumber-i körforgással, növelve, amennyiben az SQLGetDiagRec SQL_SUCCESS visszaad. Az SQLGetDiagRec-hez irányuló hívások nem károsak a fejlécére és a rekordmezőkre. Az alkalmazás később ismét hívhatja az SQLGetDiagRec-et , hogy egy mezőt visszahívjon egy rekordból, amennyiben az interimben nem hívtak meg más függvényt, kivéve az SQLGetDiagRec, SQLGetDiagField vagy SQLError. Az alkalmazás az SQLGetDiagField segítségével is visszaszerezheti a rendelkezésre álló diagnosztikai rekordok számát, hogy meghívja a SQL_DIAG_NUMBER mező értékét, majd ennyiszer hívja az SQLGetDiagRec-et .
A diagnosztikai adatszerkezet mezőinek leírásáért lásd: SQLGetDiagField. 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 a Handle argumentum handle típusát jelöli.
Egyes fejléc- és rekordmezők nem adhatók vissza környezet-, kapcsolat-, utasítás- és leíróleíró-leírókhoz. Azok a kezelőfelületek, amelyekre egy mező nem alkalmazható, az SQLGetDiagField "Fejlécmezői" és "Rekordmezők" szekcióiban vannak jelölve.
Az SQLGetDiagRec hívás SQL_INVALID_HANDLE visszaadja a HandleType SQL_HANDLE_SENV, ami egy megosztott környezeti handle-t jelöl. Ha azonban a HandleType SQL_HANDLE_ENV, akkor a Handle lehet megosztott vagy nem megosztott környezeti handle.
Kapcsolódó funkciók
| Információ erről: | Nézze |
|---|---|
| A diagnosztikai feljegyzés vagy a diagnosztikai fejléc mezőjének megszerzése | SQLGetDiagField függvény |