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.
A következőkre vonatkozik:SQL Server
Lekéri egy vagy több sor pufferét az adatbázisból. A pufferben lévő sorok csoportját a kurzor beolvasási pufferéneknevezzük.
sp_cursorfetch meghívása ID = 7 megadásával történik egy táblázatos adatfolyam-(TDS-) csomagban.
Transact-SQL szintaxis konvenciói
Szintaxis
sp_cursorfetch cursor
[ , fetchtype [ , rownum [ , nrows ] ] ]
[ ; ]
Érvek
Fontos
A kiterjesztett tárolt eljárások argumentumait a Szintaxis szakaszban leírt sorrendben kell megadni. Ha a paraméterek sorrenden kívül vannak beírva, hibaüzenet jelenik meg.
kurzor
Egy kezeli az SQL Server által létrehozott és sp_cursoropenáltal visszaadott értéket.
kurzor egy kötelező paraméter, amely egy int bemeneti értéket hív meg. További információ: Megjegyzések szakasz.
fetchtype
Megadja, hogy melyik kurzorpuffert szeretné beolvasni. fetchtype egy választható paraméter, amely a következő egész szám bemeneti értékeinek egyikét igényli.
| Érték | Név | Leírás |
|---|---|---|
0x0001 |
FIRST |
Lekéri sor első pufferét. Ha egyenlő 0-nak, a kurzor az eredményhalmaz előtt van, és nem ad vissza sorokat. |
0x0002 |
NEXT |
Lekéri sorok következő pufferét. |
0x0004 |
PREV |
Lekéri sorok előző pufferét. Megjegyzés: A FORWARD_ONLY kurzor PREV használata hibaüzenetet ad vissza, mert FORWARD_ONLY csak egy irányba görgetést támogat. |
0x0008 |
LAST |
Lekéri sorok utolsó pufferét. Ha egyenlő 0-nak, a kurzor az eredményhalmaz után lesz elhelyezve, és a program nem ad vissza sorokat. Megjegyzés: A FORWARD_ONLY kurzor LAST használata hibaüzenetet ad vissza, mert FORWARD_ONLY csak egy irányba görgetést támogat. |
0x10 |
ABSOLUTE |
Lekéri sor sor pufferét a sorszám sortól kezdve. Megjegyzés: Ha DYNAMIC kurzorhoz vagy FORWARD_ONLY kurzorhoz használja a ABSOLUTE, hibaüzenetet ad vissza, mert FORWARD_ONLY csak egyirányú görgetést támogat. |
0x20 |
RELATIVE |
Lekéri sorok pufferét az aktuális blokk első sorából sorérték ként megadott sortól kezdve. Ebben az esetben sorszám negatív szám lehet. Megjegyzés: A FORWARD_ONLY kurzor RELATIVE használata hibaüzenetet ad vissza, mert FORWARD_ONLY csak egy irányba görgetést támogat. |
0x80 |
REFRESH |
A puffert újra kitölti a mögöttes táblákból. |
0x100 |
INFO |
A kurzor adatainak lekérése. Ezt az információt a sorszám és paraméterekkel adja vissza. Ezért ha INFO van megadva, sorszám és szelvények lesznek kimeneti paraméterek. |
0x200 |
PREV_NOADJUST |
Használja, mint PREV. Ha azonban az eredményhalmaz teteje idő előtt jelentkezik, az eredmények eltérőek lehetnek. |
0x400 |
SKIP_UPDT_CNCY |
A INFOkivételével a másik fetchtype értékkel kell használni. |
Jegyzet
A 0x40érték nem támogatott.
További információ: Megjegyzések szakasz.
sorszám
Választható paraméter, amely a ABSOLUTE sorpozíciójának megadására szolgál, és INFObeolvasási típus értékeket, ha csak egész számértékeket használ bemenethez vagy kimenethez, vagy mindkettőhöz.
sorszám a fetchtype bitérték RELATIVEsoreltolásaként szolgál.
sorszám minden más értéknél figyelmen kívül lesz hagyva. További információ: Megjegyzések szakasz.
Nem kötelező paraméter, amely a beolvasandó sorok számának megadására szolgál. Ha nincs megadva, az alapértelmezett érték 20 sor. Ha adatok visszaadása nélkül szeretné beállítani a pozíciót, adjon meg egy 0értéket. Ha alkalmaz a fetchtypeINFO lekérdezésre, az a lekérdezés sorainak teljes számát adja vissza.
REFRESH
fetchtype bitérték figyelmen kívül hagyja. További információ: Megjegyzések szakasz.
Kódértékek visszaadása
A bitérték INFOmegadásakor a visszaadható értékek az alábbi táblázatokban jelennek meg.
Ha nem ad vissza sorokat, a puffer tartalma változatlan marad.
| <sorszám> | Beállítás: |
|---|---|
| Ha nincs megnyitva | 0 |
| Ha az eredményhalmaz előtt van elhelyezve | 0 |
| Ha az eredményhalmaz után van elhelyezve | -1 |
KEYSET és STATIC kurzorokhoz |
Az eredményhalmaz aktuális pozíciójának abszolút sorszáma |
DYNAMIC kurzorok esetén |
1 |
ABSOLUTE
|
A -1 a készlet utolsó sorát adja vissza. A -2 egy halmaz második és utolsó sorát adja vissza, és így tovább. Megjegyzés: Ha ebben az esetben egynél több sor lekérésére van szükség, a rendszer az eredményhalmaz utolsó két sorát adja vissza. |
<nrows> |
Beállítás: |
|---|---|
| Ha nincs megnyitva | 0 |
KEYSET és STATIC kurzorokhoz |
Általában az aktuális kulcskészlet mérete.-m, ha a kurzor aszinkron létrehozás alatt áll m ezen a ponton található sorokkal. |
DYNAMIC kurzorok esetén |
-1 |
Megjegyzések
A kurzor paraméter
A beolvasási műveletek előtt a kurzor alapértelmezett pozíciója az eredményhalmaz első sora előtt van.
A fetchtype paraméter
A SKIP_UPD_CNCYkivételével a fetchtype értékek kölcsönösen kizárják egymást.
Ha SKIP_UPDT_CNCY van megadva, az időbélyeg oszlop értékei nem lesznek beírva a kulcskészlettáblába egy sor lekérése vagy frissítésekor. Ha a kulcskészletsor frissítése folyamatban van, az időbélyeg-oszlopok értékei az előző értékként maradnak. Ha beszúrja a kulcskészletsort, az időbélyegoszlopok értékei nem lesznek meghatározva.
KEYSET kurzorok esetében ez azt jelenti, hogy a billentyűkészlettáblában az utolsó nemskip FETCHmegadott értékek vannak beállítva, ha az egyiket végrehajtották. Ha nem, akkor a populáció során beállított értékek.
A DYNAMIC kurzorok esetében ez azt jelenti, hogy ha a kihagyás frissítéssel történik, az ugyanazokat az eredményeket eredményezi, mint KEYSET. Bármely más beolvasási típus esetén a kulcskészlettábla csonkolva lesz. Ez azt jelenti, hogy a sorok beszúrása folyamatban van, és az időbélyegoszlopok értékei nem definiálva. Ezért ha DYNAMIC kurzorokhoz futtat sp_cursorfetch, ne használja a SKIP_UPDT_CNCY a REFRESHkívüli műveletekhez.
Ha a beolvasási művelet meghiúsul, mert a kért kurzor pozíció meghaladja az eredményhalmazt, a kurzor pozíciója közvetlenül az utolsó sor után van beállítva. Ha a beolvasási művelet meghiúsul, mert a kért kurzor pozíciója az eredményhalmaz előtt van, a kurzor pozíciója az első sor előtt van beállítva.
A sorszám paraméter
Ha sorszámhasznál, a puffer a megadott sortól kezdve megtelik.
A fetchtype érték ABSOLUTE a sorszám pozíciójára utal a teljes eredményhalmazon belül. A ABSOLUTE negatív szám azt határozza meg, hogy a művelet az eredményhalmaz végétől számítja a sorokat.
A fetchtype érték RELATIVE a kurzor aktuális puffer elején lévő pozíciójához viszonyítva sorszám pozíciójára utal. A RELATIVE negatív szám azt határozza meg, hogy a kurzor az aktuális kurzor pozíciójától visszafelé haladjon.
A paraméter
A fetchtype értékek REFRESH és INFO figyelmen kívül hagyják ezt a paramétert.
Ha olyan fetchtype értéket ad meg FIRST, amely értéke 0, a kurzor a beolvasási puffer sorait nem tartalmazó eredménykészlet elé kerül.
Ha olyan fetchtype értéket ad meg LAST, amely 0 érték, a kurzor az aktuális beolvasási puffer sorait nem tartalmazó eredményhalmaz után lesz elhelyezve.
A NEXT, PREV, ABSOLUTE, RELATIVEés PREV_NOADJUSTfetchtype értéke esetén a 0 értéke érvénytelen.
RPC-szempontok
Az RPC visszatérési állapota azt jelzi, hogy a kulcskészlet méretparamétere végleges-e vagy sem; vagyis ha a kulcskészlet vagy az ideiglenes tábla aszinkron módon van feltöltve.
Az RPC állapotparamétere az alábbi táblázatban látható értékek egyikére van beállítva.
| Érték | Leírás |
|---|---|
0 |
Az eljárás sikeresen lefutott. |
0x0001 |
Az eljárás nem sikerült. |
0x0002 |
A negatív irányba irányuló beolvasás miatt a kurzor pozíciója az eredményhalmaz elejére lett beállítva, amikor a beolvasás logikailag az eredmények előtt lett volna. |
0x10 |
A kurzor automatikusan bezárult. |
A sorok általában eredményhalmazként jelennek meg: oszlopformátum (0x2a), sorok (0xd1), majd DONE (0xfd). A metaadat-jogkivonatok a sp_cursoropen: 0x81, 0xa5 és 0xa4 az SQL Server-felhasználók számára megadott formátumban lesznek elküldve stb. A sorállapotjelzők rejtett oszlopokként lesznek elküldve, hasonlóan BROWSE módhoz, minden sor végén az oszlopnév sorállapotával és adattípusával, int. Ez a sorállapot-oszlop az alábbi táblázatban látható értékek egyikével rendelkezik.
| Érték | Leírás |
|---|---|
0x0001 |
FETCH_SUCCEEDED |
0x0002 |
FETCH_MISSING |
Mivel a TDS-protokoll nem tudja elküldeni a záró állapotoszlopot az előző oszlopok elküldése nélkül, a rendszer a hiányzó sorokra vonatkozó hamis adatokat küldi el. A null értékű mezők értéke null, a rögzített hosszmezők pedig a 0, az üres vagy az adott oszlop alapértelmezett értékére vannak beállítva.
A DONE sorszám mindig 0. A DONE üzenet a tényleges eredményhalmaz sorszámát tartalmazza, és hiba vagy tájékoztató üzenetek jelenhetnek meg a TDS-üzenetek között.
Ha azt szeretné, hogy a kurzor kijelölési listájával kapcsolatos metaadatok visszakerüljenek a TDS-adatfolyamba, állítsa az RPC RETURN_METADATA bemeneti jelzőt 1.
Példák
Egy. Kurzor pozíciójának módosítása a PREV használatával
Tegyük fel, hogy a kurzor h2 olyan eredményhalmazt hoz létre, amely a következő tartalommal rendelkezik az aktuális pozícióval, ahogyan az látható:
row 1 contents
row 2 contents
row 3 contents
row 4 contents <-- current position
row 5 contents
row 6 contents
Ezután egy sp_cursorfetchPREV, ahol 5 logikailag az eredményhalmaz első sora elé helyezné a kurzort. Ezekben az esetekben a kurzor úgy van beállítva, hogy az első sornál kezdődjön, és visszaadja a kért sorok számát. Ez gyakran azt jelenti, hogy olyan sorokat ad vissza, amelyek a PRIOR beolvasási pufferben voltak.
Jegyzet
Ez a pontos eset, amikor az RPC állapotparamétere 2-re van állítva.
B. A PREV_NOADJUST használatával kevesebb sort ad vissza, mint a PREV
PREV_NOADJUST soha nem tartalmazza a visszaadott sorok blokkjának aktuális kurzorpozíciójában vagy után lévő sorokat. Azokban az esetekben, amikor PREV az aktuális pozíció után ad vissza sorokat, PREV_NOADJUST a kértnél kevesebb sort ad vissza . Az A. példában szereplő jelenlegi pozíciót figyelembe véve PREV alkalmazásakor sp_cursorfetch (h2, 4, 1, 5) a következő sorokat olvassa be:
row1 contents
row2 contents
row3 contents
row4 contents
row5 contents
A PREV_NOADJUST alkalmazásakor azonban sp_cursorfetch (h2, 512, 6, 5) csak a következő sorokat olvassa be:
row1 contents
row2 contents
row3 contents