Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Az SQLSTATEs részletes információkat nyújt a figyelmeztetés vagy hiba okáról. A jelen kézikönyvben szereplő SQLSTATE-k az ISO/IEF CLI specifikációban találhatóakon alapulnak, bár a csevegéssel kezdődő SQLSTATE-k az ODBC-re vonatkoznak.
A visszatérési kódokkal ellentétben a jelen kézikönyvben szereplő SQLSTATE-k irányelvek, és az illesztőprogramoknak nem kell őket visszaadniuk. Ezért míg az illesztőprogramoknak a megfelelő SQLSTATE-t kell visszaadniuk minden olyan hiba vagy figyelmeztetés esetén, amely észlelhető, az alkalmazások nem számíthatnak erre mindig. Ennek a helyzetnek az okai kettősek:
Hiányosság Bár ez a kézikönyv sok hibát és figyelmeztetést sorol fel, valamint a hibák és figyelmeztetések lehetséges okait, ez nem teljes, és valószínűleg soha nem lesz; illesztőprogram-implementációk egyszerűen túl sokat változnak. Egy adott illesztőprogram valószínűleg nem adja vissza a jelen kézikönyvben felsorolt összes SQLSTATE-t, és a jelen kézikönyvben nem szereplő SQLSTATE-eket is visszaadhatja.
Összetettsége Egyes adatbázismotorok – különösen a relációs adatbázismotorok – szó szerint több ezer hibát és figyelmeztetést adnak vissza. Az ilyen motorok illesztőprogramjai nem valószínű, hogy ezeket a hibákat és figyelmeztetéseket az SQLSTATES-ekre képezik le, mivel az erőfeszítés, a leképezések pontatlansága, az eredményül kapott kód nagy mérete és az eredményül kapott kód alacsony értéke miatt gyakran olyan programozási hibákat adnak vissza, amelyeket futásidőben soha nem szabadna tapasztalni. Ezért az illesztőprogramoknak a lehető legtöbb hibát és figyelmeztetést kell megfeleltetnie, és mindenképpen le kell képezni azokat a hibákat és figyelmeztetéseket, amelyeken az alkalmazáslogika alapulhat, például az SQLSTATE 01004 (Csonkolt adatok).
Mivel az SQLSTATE-eket nem adja vissza megbízhatóan, a legtöbb alkalmazás csak megjeleníti őket a felhasználónak a társított diagnosztikai üzenettel együtt, amely gyakran az adott hiba vagy figyelmeztetés, valamint a natív hibakód alapján van kialakítva. Ennek során ritkán fordul elő funkcióvesztés, mert az alkalmazások egyébként sem tudják a legtöbb SQLSTATE-n alapulni a programozási logikát. Tegyük fel például, hogy az SQLExecDirect az SQLSTATE 42000-et adja vissza (szintaxishiba vagy hozzáférés-megsértés). Ha a hibát okozó SQL-utasítást az alkalmazás keményen kódolt vagy összeállította, ez egy programozási hiba, és a kódot ki kell javítani. Ha az SQL-utasítást a felhasználó adja meg, ez felhasználói hiba, és az alkalmazás mindent megtett, ami lehetséges a felhasználó tájékoztatásával a problémáról.
Ha az alkalmazások alapszintű programozási logikát végeznek az SQLSTATE-eken, fel kell őket készíteni arra, hogy az SQLSTATE-t ne adják vissza, vagy hogy egy másik SQLSTATE-t adjanak vissza. A megbízhatóan visszaadott SQLSTATE-k pontosan csak számos illesztőprogram tapasztalatán alapulhatnak. Az általános útmutató azonban az, hogy az illesztőprogramban vagy a Driver Managerben előforduló hibák SQLSTAT-jai az adatforrás helyett nagyobb valószínűséggel lesznek megbízhatóan visszaadva. A legtöbb illesztőprogram például valószínűleg az SQLSTATE HYC00-t adja vissza (nem kötelező funkció nem implementálva), míg kevesebb illesztőprogram valószínűleg az SQLSTATE 42021-et adja vissza (az oszlop már létezik).
Az alábbi SQLSTATE-k futásidejű hibákat vagy figyelmeztetéseket jeleznek, és jó jelöltek a programozási logika alapjaként. Azonban nincs garancia arra, hogy minden sofőr visszaküldi őket.
01004 (Csonkolt adatok)
01S02 (A beállítás értéke megváltozott)
HY008 (A művelet megszakítva)
HYC00 (Nem kötelező funkció nem implementálva)
HYT00 (Az időtúllépés lejárt)
Az SQLSTATE HYC00 (nem implementált opcionális funkció) különösen fontos, mert az alkalmazás csak így tudja megállapítani, hogy az illesztőprogram támogatja-e az adott utasítást vagy kapcsolatattribútumot.
Az SQLSTATE-k teljes listáját és a visszaadott függvényeket az A függelékben találja: ODBC hibakódok. Az egyes függvények adott SQLSTATE visszaadásának feltételeinek részletes ismertetését az adott függvényben találja.