SQLExtendedFetch függvény

Megfelelőség
Bemutatott verzió: ODBC 1.0 szabványoknak megfelelés: Elavult

Summary
Az SQLExtendedFetch lekéri a megadott sorkészletet az eredményhalmazból, és visszaadja az összes kötött oszlop adatait. A sorhalmazok abszolút vagy relatív pozícióban vagy könyvjelzővel határozhatók meg.

Note

Az ODBC 3*.x* verzióban az SQLExtendedFetch-et az SQLFetchScroll váltotta fel. Az ODBC 3*.x* alkalmazásoknak nem szabad SQLExtendedFetch-et hívniuk; helyette SQLFetchScroll-t kellene hívniuk. A Driver Manager az SQLFetchScroll-et az SQLExtendedFetch-hez képezi, amikor ODBC 2*.x* illevezetővel dolgozik. Az ODBC 3*.x* drivereknek támogatniuk kell az SQLExtendedFetch-et , ha ODBC 2*.x* alkalmazásokkal akarnak működni, amelyek ezt hívják. További információért lásd: "Hozzászólások" és "Blokkol kurzorok, görgethető kurzorok, valamint visszafelé kompatibilitás " a G mellékletben: Driver Guidelines for Backward Compatibility (Driver Guidelines for Backward Compatibility).

Syntax

  
SQLRETURN SQLExtendedFetch(  
      SQLHSTMT         StatementHandle,  
      SQLUSMALLINT     FetchOrientation,  
      SQLLEN           FetchOffset,  
      SQLULEN *        RowCountPtr,  
      SQLUSMALLINT *   RowStatusArray);  

Arguments

StatementHandle
[Bemenet] Utasításkezelő.

FetchOrientation
[Bemenet] Fajta hozás. Ez ugyanaz, mint a FetchOrientationaz SQLFetchScroll-ben.

FetchOffset
[Bemenet] A sor száma, amit el kell hozni. Ez ugyanaz, mint a FetchOffset az SQLFetchScroll-ben, egy kivétellel. Amikor a FetchOrientation SQL_FETCH_BOOKMARK, a FetchOffset fix hosszúságú könyvjelző, nem pedig egy könyvjelző eltolása. Más szóval, az SQLExtendedFetch ebből az argumentumból nyeri vissza a könyvjelzőt, nem a SQL_ATTR_FETCH_BOOKMARK_PTR utasítás attribútumját. Nem támogatja a változó hosszúságú könyvjelzőket, és nem támogatja a sorhalmaznak a 0-tól eltérő (nem a 0) lekérését egy könyvjelzőből.

RowCountPtr
[Kimenet] Egy pufferre mutató, amelyben vissza lehet adni a ténylegesen lehozott sorok számát. Ezt a puffert ugyanúgy használják, mint az SQL_ATTR_ROWS_FETCHED_PTR állítás attribútuma által megadott puffer. Ezt a puffert csak az SQLExtendedFetch használja. Az SQLFetch és az SQLFetchScroll nem használja.

RowStatusArray
[Kimenet] Mutató egy tömbre, amelyben vissza lehet adni minden sor státuszát. Ezt a tömböt ugyanúgy használják, mint a SQL_ATTR_ROW_STATUS_PTR állítás attribútuma által meghatározott tömböt.

Azonban ennek a tömbnek a címe nem tárolódik az IRD SQL_DESC_STATUS_ARRAY_PTR mezőjében. Továbbá ezt a tömböt csak az SQLExtendedFetch használja, illetve az SQLBulkOperations SQL_ADD vagy SQLSetPosművelettel, ha az SQLExtendedFetch után hívják. Nem használja az SQLFetch vagy SQLFetchScroll, és nem használja az SQLBulkOperations vagy SQLSetPos , ha azokat az SQLFetch vagy SQLFetchScroll után hívják. Nem használják akkor sem, amikor az SQLBulkOperations-t SQL_ADD művelettel meghívják, mielőtt bármilyen fetch függvényt meghívnának. Más szóval, csak az S7 állítási állapotban használják. Nem használják az S5 vagy S6 állítási állapotokban. További információért lásd: Állításátmenetek a B mellékletben: ODBC állapotátmeneti táblázatok.

Az alkalmazásoknak érvényes mutatót kell biztosítaniuk a RowStatusArray argumentumban; ha nem, akkor az SQLExtendedFetch viselkedése, valamint az SQLBulkOperations vagy SQLSetPos hívásainak viselkedése, miután az SQLExtendedFetch egy kurzort helyezett el, nem definiált.

Returns

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_NO_DATA, SQL_STILL_EXECUTING, SQL_ERROR vagy SQL_INVALID_HANDLE.

Diagnostics

Amikor az SQLExtendedFetch SQL_ERROR vagy SQL_SUCCESS_WITH_INFO értéket ad vissza, az SQLErrror hívásával hozzák létre egy hozzárendelt SQLSTATE értéket. Az alábbi táblázat felsorolja az SQLExtendedFetch által gyakran visszaadott SQLSTATE értékeket, és mindegyiket elmagyarázza ennek a függvénynek a 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. Ha hiba egyetlen oszlopon történik, az SQLGetDiagField SQL_DIAG_COLUMN_NUMBER DiagIdentifierrel hívható, hogy meghatározzuk, melyik oszlopon történt a hiba; és az SQLGetDiagField egy SQL_DIAG_ROW_NUMBER DiagIdentifier segítségével meghívható, hogy meghatározzuk, melyik sor tartalmazza az adott oszlopot.

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.)
01004 Sztringadatok, jobb csonkolt Az oszlophoz visszaadott string vagy bináris adat nem üres karakter vagy nem NULL bináris adatok lerövidítését eredményezte. Ha sztringérték volt, akkor jobbról csonkolt. Ha számérték volt, a szám törtrész részét lerövidítették. (A függvény SQL_SUCCESS_WITH_INFO ad vissza.)
01S01 Hiba a sorban Hiba történt egy vagy több sor lekérése közben. (A függvény SQL_SUCCESS_WITH_INFO ad vissza.)
01S06 Próbálkozz előre az eredményhalmazt elő behozni az első sorhalmazt A kért sorhalmaz átfedte az eredményhalmaz kezdetét, amikor az aktuális pozíció az első sor felett volt, és vagy a FetchOrientation SQL_PRIOR, vagy a FetchOrientation SQL_RELATIVE negatív FetchOffset-szelettel , amelynek abszolút értéke kisebb, mint az aktuális SQL_ROWSET_SIZE. (A függvény SQL_SUCCESS_WITH_INFO ad vissza.)
01S07 Tört csonkolás Az oszlophoz visszaadott adatokat lerövidítették. Számos adattípusok esetén a szám törtrész része lerövidített. Az idő-, időbélyeg- és intervallum adattípusok esetében, amelyek időkomponenst tartalmaznak, az idő törtrész részét lerövidítették.

(A függvény SQL_SUCCESS_WITH_INFO ad vissza.)
07006 Korlátozott adattípus-attribútumok megsértése Egy adatértéket nem lehetett átalakítani a TargetType által az SQLBindCol-ban megadott C adattípusra.
07009 Érvénytelen descriptor index A 0. oszlop SQLBindCol-ra volt kötve, és a SQL_ATTR_USE_BOOKMARKS állítás attribútumot SQL_UB_OFF-re állították.
08S01 Kommunikációs kapcsolat hibája Az illesztőprogram és az adatforrás közötti kommunikációs kapcsolat, amelyhez az illesztőprogram csatlakoztatva volt, nem sikerült, mielőtt a függvény befejeződött a feldolgozás.
22002 A mutatóváltozó kötelező, de nincs megadva A NULL adatokat egy oszlopba hozták be, amelynek StrLen_or_IndPtrSQLBindCol null mutató volt.

(A függvény SQL_SUCCESS_WITH_INFO ad vissza.)
22003 Numerikus érték a tartományon kívül Ha egy vagy több oszlopra visszaadták volna a numerikus értéket (számjegyként vagy láncszálként), az egész (nem tört) rész levágását eredményezte.

(A függvény SQL_SUCCESS_WITH_INFO ad vissza.)

További információért lásd a D melléklet Intervallum- és numerikus adattípusok irányelveit : Adattípusok.
22007 Érvénytelen dátum/idő formátum Az eredményhalmaz egy karakteroszlopa egy dátum, idő vagy időbélyeg C szerkezethez volt kötve, és az oszlopban lévő érték érvénytelen dátum, idő vagy időbélyeg volt.

(A függvény SQL_SUCCESS_WITH_INFO ad vissza.)
22012 Osztás nullával Egy aritmetikai kifejezésből származó értéket adtak vissza, ami nullával osztott részt.

(A függvény SQL_SUCCESS_WITH_INFO ad vissza.)
22015 Intervallummező túlcsordult Egy pontos numerikus vagy intervallum SQL típusból C intervallum típushoz való hozzárendelés jelentős számjegyek elvesztését okozta az első mezőben.

Amikor adatokat egy C intervallum típusba hívtak, nem mutatkoztak be az SQL típus értékének ábrázolása a C intervallum típusban.

(A függvény SQL_SUCCESS_WITH_INFO ad vissza.)
22018 Érvénytelen karakterérték az öntött specifikációhoz A C típus pontos vagy közelítő numerikus, dátumi vagy intervallum adattípus volt; az oszlop SQL típusa karakteradattípus volt; és az oszlopban lévő érték nem volt érvényes literális a kötött C típusból.

(A függvény SQL_SUCCESS_WITH_INFO ad vissza.)
24000 Érvénytelen kurzorállapot A StatementHandle végrehajtott állapotban volt, de nem volt hozzá semmilyen eredményhalmaz.
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 SQLError által a *MessageText pufferben 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.
HY008 A műveletet megszakították Az aszinkron feldolgozás engedélyezve lett a StatementHandle-ben. A függvényt hívták, és mielőtt befejezte volna a végrehajtást, az SQLCancel vagy SQLCancelHandle meghívása a StatementHandle-en, majd a függvényt ismét meghívták a StatementHandle-en.

A függvény meghívása megtörtént, és a végrehajtás befejezése előtt az SQLCancel vagy az SQLCancelHandle egy másik szálról lett meghívva a StatementHandle-ra egy többszálas alkalmazásból.
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 SQLExtendedFetch függvényt hívták.

(DM) SQLExecute, SQLExecDirect vagy SQLMoreResults lett meghívva az Utasításkezelőhöz , és SQL_PARAM_DATA_AVAILABLE ad vissza. Ez a függvény az összes streamelt paraméter adatainak lekérése előtt lett meghívva.

(DM) A megadott StatementHandle nem volt végrehajtott állapotban. A függvényt anélkül hívták, hogy előbb az SQLExecDirect, SQLExecute vagy katalógus függvény hívták volna meg.

(DM) Egy aszinkron módon végrehajtó függvény (nem ez) lett meghívva az StatementHandle-hez , és a függvény meghívásakor továbbra is végrehajtó volt.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperations vagy SQLSetPos lett meghívva az Utasításkezelőhöz , és SQL_NEED_DATA. Ezt a függvényt az összes adatvégrehajtási paraméter vagy oszlop adatküldése előtt hívták meg.

(DM) Az SQLExtendedFetch a StatementHandle miatt az SQLFetch vagy SQLFetchScroll hívása után lett meg, és mielőtt az SQLFreeStmt a SQL_CLOSE opcióval meghívták volna.

(DM) Az SQLBulkOperations egy utasítás miatt szólalt meg, mielőtt a SQLFetch, SQLFetchScroll vagy SQLExtendedFetch lett volna meghívva, majd az SQLExtendedFetch a SQL_CLOSE opcióval előbb az SQLFreeStmt hívása előtt lett volna.
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.
HY106 A hatótávolságon kívüli hívó típus (DM) A FetchOrientation argument értéke érvénytelen volt. (Lásd: "Hozzászólások.")

A FetchOrientation érv SQL_FETCH_BOOKMARK volt, és a SQL_ATTR_USE_BOOKMARKS állítás attribútuma SQL_UB_OFF-re volt beállítva.

A SQL_CURSOR_TYPE állítás opció értéke SQL_CURSOR_FORWARD_ONLY volt, és a FetchOrientation érv értéke nem volt SQL_FETCH_NEXT.

A FetchOrientation érv SQL_FETCH_RESUME.
HY107 Sor értéke a tartományon kívül Az SQL_CURSOR_TYPE kijelentés opcióval megadott érték SQL_CURSOR_KEYSET_DRIVEN volt, de a SQL_KEYSET_SIZE állítás attribútumával megadott érték nagyobb, mint 0, és kisebb volt a SQL_ROWSET_SIZE kijelentés attribútumnál megadott értéknél.
HY111 Érvénytelen könyvjelző érték A FetchOrientation érv SQL_FETCH_BOOKMARK volt, és a FetchOffset érvében megadott könyvjelző nem volt érvényes.
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.
HYC00 A választható funkció nem implementálva Az illezőprogram vagy adatforrás nem támogatja a megadott fetch típust.

Az illeszőr vagy adatforrás nem támogatja azt az átalakítást, amelyet az SQLBindColTargetType és a megfelelő oszlop SQL adattípusának kombinációja határoz meg. Ez a hiba csak akkor érvényes, ha az oszlop SQL adattípusa egy driver-specifikus SQL adattípusra van leképezve.
HYT00 Időtúllépés történt A lekérdezés időtúllépési időtartama lejárt, mielőtt az adatforrás visszaadta az eredményhalmazt. Az idő-out időszakot az SQLSetStmtOption, SQL_QUERY_TIMEOUT segítségével állítják be.
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 SQLExtendedFetch viselkedése megegyezik az SQLFetchScrollével, a következő kivételekkel:

  • Az SQLExtendedFetch és az SQLFetchScroll különböző módszereket használnak a lehozott sorok számának visszaadására. Az SQLExtendedFetch a *RowCountPtr-ben behozott sorok számát adja vissza; Az SQLFetchScroll visszaadja azokat a sorokat, amelyeket közvetlenül a SQL_ATTR_ROWS_FETCHED_PTR által mutatott pufferhez hoztak. További információért lásd a RowCountPtr érvet.

  • SQLExtendedFetch és SQLFetchScroll minden sorának státuszát adja vissza különböző tömbökben. További információért lásd a RowStatusArray argumentumot.

  • Az SQLExtendedFetch és az SQLFetchScroll különböző módszereket használnak a könyvjelző visszahívására, amikor a FetchOrientation SQL_FETCH_BOOKMARK. Az SQLExtendedFetch nem támogatja a változó hosszúságú könyvjelzőket vagy a sorhalmazok nullán kívüli eloszlást a könyvjelzőből. További információért lásd a FetchOffset érvet.

  • Az SQLExtendedFetch és SQLFetchScroll különböző sorkészlet méreteket használnak. Az SQLExtendedFetch a SQL_ROWSET_SIZE mondattub attribútumának értékét használja, míg az SQLFetchScroll a SQL_ATTR_ROW_ARRAY_SIZE mondattub attribútumának értékét.

  • Az SQLExtendedFetch szemantikája kissé eltér a hibákezeléstől, mint az SQLFetchScroll. További információért lásd: "Hibakezelés" az SQLFetchScroll "Hozzászólások" szekciójában.

  • Az SQLExtendedFetch nem támogatja a binding offseteket (az SQL_ATTR_ROW_BIND_OFFSET_PTR utasítás attribútumját).

  • Az SQLExtendedFetch hívásai nem keverhetők SQLFetch vagy SQLFetchScroll hívásokkal, és ha az SQLBulkOperations-t előbb hívják meg, hogy bármelyik fetch függvényt meghívják, akkor az SQLExtendedFetch nem hívható meg, amíg a kurzor be van zárva és újranyitva. Vagyis az SQLExtendedFetch csak S7 állapotban hívható. További információért lásd: Állításátmenetek a B mellékletben: ODBC állapotátmeneti táblázatok.

Amikor egy alkalmazás ODBC 2*.x* illevezetőt használva hívja az SQLFetchScroll-t , a Driver Manager ezt a hívást az SQLExtendedFetch-hez rendeli. További információért lásd a "SQLFetchScroll és ODBC 2*.x* Drivers" ( SQLFetchScroll) oldalt.

Az ODBC 2*.x* verzióban az SQLExtendedFetch több sort hívta le, míg az SQLFetch egyetlen sort hívott. Az ODBC 3*.x* formátumban viszont az SQLFetch több sor lekérésére hívható.

Információ erről: Nézze
Puffer kötése egy eredményhalmaz oszlopához SQLBindCol függvény
Tömeges behelyezési, frissítési vagy törlési műveletek végrehajtása SQLBulkOperations Function
Utasításfeldolgozás megszakítása SQLCancel függvény
Információ visszaküldése egy oszlopról az eredményhalmazban SQLDescribeCol 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
Az eredményhalmaz oszlopainak számának visszaállítása SQLNumResultCols függvény
A kurzor pozicionálása, az adatok frissítése a sorhalmazban, vagy az adatok frissítése vagy törlése az eredményhalmazban SQLSetPos függvény
Utasításattribútum beállítása SQLSetStmtAttr függvény