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
Bevezetett verzió: ODBC 1.0 szabványmegfelelőség: ISO 92
Summary
Az SQLCancel megszünteti a feldolgozást egy utasításon.
Egy kapcsolat vagy utasítás feldolgozásának megszüntetéséhez használd az SQLCancelHandle függvényt.
Syntax
SQLRETURN SQLCancel(
SQLHSTMT StatementHandle);
Arguments
StatementHandle
[Bemenet] Utasításkezelő.
Returns
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR vagy SQL_INVALID_HANDLE.
Diagnostics
Amikor az SQLCancel SQL_ERROR vagy SQL_SUCCESS_WITH_INFO értéket ad vissza, egy hozzárendelt SQLSTATE érték megkapható SQLGetDiagRec hívásával, amely egy SQL_HANDLE_STMT HandleType és egy HandleType of StatementHandle (Handle) segítségével érhető el. Az alábbi táblázat felsorolja az SQLCancel által gyakran visszaadott SQLSTATE értékeket, és mindegyiket elmagyarázza ezen függvény kontextusában; a "(DM)" jelölés megelőzi a Driver Manager által visszaadott SQLSTATE-leírásokat. 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 | Description |
|---|---|---|
| 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 buffer 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 | (DM) A StatementHandle-hez társított kapcsolati leíróhoz aszinkron módon végrehajtó függvény lett meghívva. Ez az aszinkron függvény még akkor futott, amikor az SQLCancel függvényt hívták. (DM) A törlési művelet sikertelen volt, mert egy aszinkron művelet zajlik egy StatementHandle-hez kapcsolódó kapcsolati handle-en. |
| 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. |
| HY018 | A szerver elutasította a törlési kérelmet | A szerver elutasította a törlési kérelmet. |
| 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) A felfüggesztett állapotról további információt az SQLEndTran függvényben talál. |
| HYT01 | A kapcsolati időkorlát 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 az SQLSetConnectAttr SQL_ATTR_CONNECTION_TIMEOUT keresztül van beállítva. |
| IM001 | Az illesztőprogram nem támogatja ezt a függvényt | (DM) Az StatementHandle-hez társított illesztőprogram nem támogatja a függvényt. |
Comments
Az SQLCancel az alábbi feldolgozási típusokat törölheti egy utasításon:
Egy függvény, amely aszinkron módon fut az utasításon.
Egy függvény egy állításon, amelyhez adatot kell kérni.
Egy függvény, amely egy másik szálon fut az állításon.
Az ODBC 2-ben. x, ha egy alkalmazás akkor hívja az SQLCancel-t , amikor nem végeznek feldolgozást az utasításon, az SQLCancel ugyanazt a hatást mutatja, mint az SQLFreeStmt , az SQL_CLOSE opcióval; ez a viselkedés csak a teljesség miatt definiálható, és az alkalmazásoknak hívniuk kell SQLFreeStmt vagy SQLCloseCursort a kurzorok lezárásához.
Amikor az SQLCancel-t egy aszinkron módon futó függvény törlésére hívják, vagy egy adatigényű függvényt egy utasításon, a törölt függvény által közzétett diagnosztikai rekordok törlésre kerülnek, és az SQLCancel saját diagnosztikai rekordokat tesz közzé; amikor azonban az SQLCancelt hívják, hogy töröljön egy másik szálon futó utasításon futó függvényt, akkor nem törli a törölt funkció diagnosztikai rekordjait, és nem teszi közzé saját diagnosztikai rekordjait.
Aszinkron feldolgozás megszüntetése
Miután egy alkalmazás aszinkron módon hív egy függvényt, ismételten hívja a függvényt, hogy megállapítsa, befejezte-e a feldolgozást. Ha a függvény még dolgozik, visszaadja a SQL_STILL_EXECUTING. Ha a függvény befejezte a feldolgozást, akkor egy másik kódot ad vissza.
Bármely olyan hívás után, amely SQL_STILL_EXECUTING függvényt ad, egy alkalmazás hívhatja az SQLCancel funkciót a függvény megszüntetésére. Ha a törlési kérelem sikeres, a sofőr visszaadja SQL_SUCCESS. Ez az üzenet nem jelzi, hogy a funkció ténylegesen megszakadt; azt jelzi, hogy a lemondási kérés feldolgozása megtörtént. Mikor vagy ha a függvény ténylegesen törölhető, az illesztőfüggő és adatforrástól függ. Az alkalmazásnak folytatnia kell az eredeti függvény hívását, amíg a visszahívási kód nem SQL_STILL_EXECUTING. Ha a függvényt sikeresen törölték, a visszatérő kód SQL_ERROR és SQLSTATE HY008 (Művelet törlése). Ha a függvény befejezte a normál feldolgozást, a visszatérő kód SQL_SUCCESS vagy SQL_SUCCESS_WITH_INFO, ha a függvény sikeres volt, vagy SQL_ERROR, és egy SQLSTATE, amely nem HY008 (Művelet törölve), ha a függvény meghibásodott.
Note
Az ODBC 3.5-ben az SQLCancel-re való hívás, amikor nem zajlik feldolgozás az utasításon, nem kezelik SQLFreeStmt-ként a SQL_CLOSE opcióval, de ennek egyáltalán nincs hatása. A kurzor bezárásához az alkalmazásnak az SQLCloseCursort kell meghívnia, nem az SQLCancelt.
További információért az aszinkron feldolgozásról lásd: Aszinkron végrehajtás.
Adatra szoruló függvények törlése
Miután az SQLExecute vagy SQLExecDirect SQL_NEED_DATA és még azelőtt, hogy az összes adat-végrehajtási paraméter adatai elküldték, egy alkalmazás meghívhatja az SQLCancelt az utasítás végrehajtásának megszüntetésére. Miután az utasítás törölődött, az alkalmazás ismét hívhatja az SQLExecute vagy SQLExecDirect funkciót. További információért lásd: SQLBindParameter.
Miután az SQLBulkOperations vagy SQLSetPos SQL_NEED_DATA és még azelőtt, hogy az összes adat-végrehajtáskor lévő oszlop adatai elküldtek, egy alkalmazás hívhatja az SQLCancel-t a művelet megszüntetésére. A művelet törlése után az alkalmazás ismét hívhatja SQLBulkOperations vagy SQLSetPos programokat; A törlés nem befolyásolja a kurzor állapotát vagy a jelenlegi kurzor pozícióját. További információért lásd: SQLBulkOperations vagy SQLSetPos.
A másik szálon végrehajtható függvények törlése
Egy többszálas alkalmazásban az alkalmazás törölhet egy másik szálon futó függvényt. A függvény megszüntetéséhez az alkalmazás ugyanazzal az utasításkezelővel hívja az SQLCancel-t , mint a célfüggvény, de egy másik szálon. A funkció megszüntetésének módja az illesztőprogramtól és az operációs rendszertől függ. Ahogy egy aszinkron módon futó függvény törlésekor, az SQLCancel visszaküldési kódja csak azt jelzi, hogy az illesztőprogram sikeresen feldolgozta-e a kérést. Csak SQL_SUCCESS vagy SQL_ERROR visszaadható; Semmilyen diagnosztikai információ nem érkezik. Ha az eredeti függvényt töröljük, visszaadja a SQL_ERROR és SQLSTATE HY008-at (Művelet törölve).
Ha egy SQL utasítást akkor hajtanak végre, amikor az SQLCancel-t egy másik szálon hívják az utasítás végrehajtásának törlésére, akkor lehetséges, hogy a végrehajtás sikeres lesz, és visszatér SQL_SUCCESS, miközben a törlés is sikeres. Ebben az esetben a Driver Manager feltételezi, hogy a kurzort a mondalomvégrehajtással megnyitva a cancel lezárja, így az alkalmazás nem tudja használni a kurzort.
További információért a szálakozásról lásd: Multithreading.
Kapcsolódó funkciók
| Információ erről: | Nézze |
|---|---|
| Puffer kötése egy paraméterhez | SQLBindParameter függvény |
| Tömeges behelyezési vagy frissítési műveletek végrehajtása | SQLBulkOperations Function |
| Megszakítja egy aszinkron futó függvényt egy kapcsolati handle-en, az SQLCancel funkciója mellett. | SQLCancelHandle függvény |
| SQL utasítás végrehajtása | SQLExecDirect függvény |
| Előkészített SQL-utasítás végrehajtása | SQLExecute függvény |
| Egy utasításkezelő felszabadítása | SQLFreeStmt |
| A diagnosztikai feljegyzés vagy a diagnosztikai fejléc mezőjének megszerzése | SQLGetDiagField függvény |
| Diagnosztikai adatstruktúra több mezőjének beszerzése | SQLGetDiagRec függvény |
| A következő paraméter visszaadása az adatok elküldéséhez: | SQLParamData függvény |
| Paraméteradatok küldése végrehajtási időpontban | SQLPutData-függvény |
| A kurzor elhelyezése sorhalmazban, adatok frissítése a sorhalmazban, vagy az adatok frissítése vagy törlése az eredményhalmazban | SQLSetPos függvény |