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


SQLCancelHandle függvény

megfelelőségi
Bevezetett verzió: ODBC 3.8 szabványmegfelelőség: Nincs

A legtöbb ODBC 3.8 -illesztő (és újabb) várhatóan implementálja ezt a függvényt. Ha egy illesztőprogram nem, Az SQLCancelHandle hívása a Handle paraméterben található kapcsolati leíróval SQL_ERROR az IM001 SQLSTATE-jével, és az "Illesztőprogram nem támogatja ezt a függvényt" üzenet jelenik meg az SQLCancelHandle hívása utasításleíróval, mivel a Handle paramétert az illesztőprogram-kezelő leképezi az SQLCancel hívásához, és feldolgozható, ha az illesztőprogram az SQLCancelimplementálja. Az alkalmazások SQLGetFunctions segítségével megállapíthatják, hogy az illesztőprogram támogatja-e SQLCancelHandle.

összefoglaló
SQLCancelHandle megszakítja a feldolgozást egy kapcsolaton vagy utasításon. Az Illesztőprogram-kezelő leképez egy hívást SQLCancelHandle az SQLCancel hívásához, ha HandleType SQL_HANDLE_STMT.

Szintaxis

  
SQLRETURN SQLCancelHandle(  
      SQLSMALLINT  HandleType,  
      SQLHANDLE    Handle);  

Érvek

HandleType
[Bemenet] A feldolgozás megszakítására szolgáló leíró típusa. Az érvényes értékek SQL_HANDLE_DBC vagy SQL_HANDLE_STMT.

kezelése
[Bemenet] A feldolgozás megszakítására szolgáló leíró.

Ha Handle nem az HandleTypeáltal megadott típusú leíró, SQLCancelHandle SQL_INVALID_HANDLE ad vissza.

Visszatér

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR vagy SQL_INVALID_HANDLE.

Diagnosztika

Ha SQLCancelHandle SQL_ERROR vagy SQL_SUCCESS_WITH_INFO ad vissza, a társított SQLSTATE-érték úgy érhető el, hogy meghívja SQLGetDiagRec egy SQL_HANDLE_STMT HandleType és egy utasításkezelővel, Handle vagy HandleType SQL_HANDLE_DBC és egy kapcsolati leíróval Handle.

Az alábbi táblázat felsorolja a SQLCancelHandle által gyakran visszaadott SQLSTATE-értékeket, és ismerteti azokat a függvény kontextusában; a(z) "(DM)" jelölés megelőzi a Driver Manager által visszaadott SQLSTATES-ek leírását. Az egyes SQLSTATE-értékekhez társított visszatérési kód SQL_ERROR, kivéve, ha másként van feltüntetve.

SQLSTATE Hiba Leírás
01000 Általános figyelmeztetés Illesztőprogram-specifikus tájékoztató üzenet. (A függvény SQL_SUCCESS_WITH_INFO ad vissza.)
HY000 Általános hiba Hiba történt, amely miatt nem volt konkrét SQLSTATE, és amelyhez nem definiáltak implementációspecifikus SQLSTATE-t. Az SQLGetDiagRec által a *MessageText puffer argumentumban visszaadott hibaüzenet leírja a hibát és annak okát.
HY001 Memóriafoglalási hiba Az illesztőprogram nem tudta lefoglalni a függvény végrehajtásának vagy befejezésének támogatásához szükséges memóriát.
HY010 Függvényütemezési hiba A rendszer aszinkron módon végrehajtó, utasítással kapcsolatos függvényt hívott meg a Leírótársított egyik utasításleíróhoz, és HandleType SQL_HANDLE_DBC lett beállítva. Az aszinkron függvény továbbra is fut, amikor SQLCancelHandle volt meghívva.

(DM) A HandleType argumentum SQL_HANDLE_STMT; a társított kapcsolati leírón aszinkron módon végrehajtó függvényt hívtak meg; és a függvény még mindig a függvény meghívásakor lett végrehajtva.

(DM) SQLExecute, SQLExecDirectvagy SQLMoreResults a Handle és HandleType SQL_HANDLE_DBC értékre lett állítva, és SQL_PARAM_DATA_AVAILABLE lett visszaadva. Ez a függvény az összes streamelt paraméter adatainak lekérése előtt lett meghívva.

SQLBrowseConnectConnectionHandlelett meghívva, és SQL_NEED_DATA adott vissza. Ez a függvény a böngészési folyamat befejezése előtt lett meghívva.
HY013 Memóriakezelési hiba A függvényhívás nem dolgozható fel, mert a mögöttes memóriaobjektumok nem érhetők el, esetleg a memóriahiány miatt.
HY092 Érvénytelen attribútum/beállításazonosító HandleType SQL_HANDLE_ENV vagy SQL_HANDLE_DESC lett beállítva.
HY117 A kapcsolat ismeretlen tranzakciós állapot miatt fel van függesztve. Csak a leválasztási és írásvédett függvények engedélyezettek. (DM) További információ a felfüggesztett állapotról: SQLEndTran függvény.
HYT01 A kapcsolat időtúllépése lejárt A kapcsolat időtúllépési időtartama lejárt, mielőtt az adatforrás válaszolt a kérésre. A kapcsolat időtúllépési időszaka SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT.
IM001 Az illesztőprogram nem támogatja ezt a függvényt (DM) A Handle illesztőprogramja nem támogatja a függvényt.

Ha SQLCancelHandle HandleType SQL_HANDLE_STMT értékre van állítva, az SQLCancelfüggvény által visszaadható SQLSTATE-t is visszaadhatja.

Megjegyzések

Ez a függvény hasonlít az SQLCancel , de a kapcsolat- vagy utasításleírót nem csak utasításleíróként, hanem paraméterként is használhatja. Az Illesztőprogram-kezelő leképez egy hívást SQLCancelHandle az SQLCancel hívásához, ha HandleType SQL_HANDLE_STMT. Ez lehetővé teszi, hogy az alkalmazások SQLCancelHandle használatával megszakítsák az utasításműveleteket akkor is, ha az illesztőprogram nem implementálja SQLCancelHandle.

Az utasításművelet megszakításával kapcsolatos további információkért lásd SQLCancel-függvény.

Ha nincs folyamatban művelet Kezelő az SQLCancelHandle hívásának nincs hatása.

SQLCancelHandle egy kapcsolati leírón megszakíthatja a következő feldolgozási típusokat:

  • A kapcsolaton aszinkron módon futó függvény.

  • Egy függvény, amely egy másik szál kapcsolati leíróján fut.

Ha SQLCancelHandle a kapcsolaton aszinkron módon futó függvény megszakítására van meghívva, a rendszer hozzáfűzi a SQLCancelHandle által közzétett diagnosztikai rekordokat a megszakított művelet által visszaadottakhoz; SQLCancelHandle azonban nem ad vissza diagnosztikai rekordokat, ha egy másik szálon lévő kapcsolaton futó függvényt töröl.

Ha SQLCancelHandle használatával megszakítja SQLEndTran a kapcsolatot felfüggesztett állapotba helyezheti. További információ a felfüggesztett állapotról: SQLEndTran függvény.

Jegyzet

A SQLCancelHandle Windows 7-nél régebbi Windows operációs rendszeren üzembe helyezett alkalmazásokban való használatáról a Kompatibilitási mátrixcímű témakörben talál további információt.

Ha egy függvény SQL_STILL_EXECUTING ad vissza, az alkalmazás meghívhatja SQLCancelHandle a művelet megszakításához. Ha a lemondási kérelem sikeres, SQLCancelHandle SQL_SUCCESS ad vissza. Ez nem jelenti azt, hogy az eredeti függvényt törölték; azt jelzi, hogy a lemondási kérelem feldolgozása megtörtént. Az illesztőprogram és az adatforrás határozza meg, hogy a művelet mikor vagy mikor lesz megszakítva. Az alkalmazásnak továbbra is meg kell hívnia az eredeti függvényt, amíg a visszatérési kód nem SQL_STILL_EXECUTING. Ha az eredeti függvényt megszakították, a visszatérési kód SQL_ERROR és az SQLSTATE HY008 (a művelet megszakítva). Ha az eredeti függvény befejezte a normál feldolgozást (nem törölték), a visszatérési kód SQL_SUCCESS vagy SQL_SUCCESS_WITH_INFO, vagy SQL_ERROR és a HY008-tól eltérő SQLSTATE (a művelet megszakítva), ha az eredeti függvény meghiúsult.

A függvények másik szálon történő végrehajtásának megszakítása

Többszálas alkalmazásokban az alkalmazás megszakíthat egy másik szálon futó műveletet. A művelet megszakításához az alkalmazás meghívja SQLCancelHandle a függvény által használt leíróval, de egy másik szálon. Az illesztőprogram és az operációs rendszer határozza meg a művelet megszakításának módját. Az SQLCancelHandle visszatérési kódja azt jelzi, hogy az illesztőprogram feldolgozta-e a kérést, és SQL_SUCCESS vagy SQL_ERROR ad vissza (nem ad vissza diagnosztikai adatokat). Ha az eredeti függvény feldolgozása megszakad, az eredeti függvény SQL_ERROR és SQLSTATE HY008 értéket ad vissza (a művelet megszakítva).

Ha SQLCancelHandle meghív egy másik szálon egy függvényt, a függvény sikeres lesz, és a megszakítás érvénybe lépése előtt SQL_SUCCESS ad vissza. Az SQLCancelHandle hívásának nincs hatása, ha az SQLCancelHandle előtt befejeződött a művelet.

További információ: Lát
Az aszinkron módon futó függvény lemondása egy utasításkezelőn, egy olyan utasításon lévő függvény lemondása, amely adatokat igényel, vagy egy másik szálon futó utasításon futó függvény lemondása. SQLCancel-függvény

Lásd még:

ODBC API-referencia
ODBC-fejlécfájlok
aszinkron végrehajtás (lekérdezési módszer)