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
A kérések helyhez helyezkednek el a frissítések. Ez az eljárás egy vagy több sorban hajt végre műveleteket a kurzor beolvasási pufferén belül.
sp_cursor meghívása ID = 1 megadásával történik egy táblázatos adatfolyam-(TDS-) csomagban.
Transact-SQL szintaxis konvenciói
Szintaxis
sp_cursor cursor , optype , rownum , table
[ , value [ ...n ] ]
[ ; ]
É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
A kurzorfogópont. A kurzor paraméter int, és nem lehet NULL. Ez a paraméter az adatbázismotor által létrehozott handle érték, amelyet a sp_cursoropen eljárás ad vissza.
optípusos
Kötelező paraméter, amely meghatározza, hogy a kurzor milyen műveletet hajt végre. Az optype paraméterhez az alábbi értékek egyikére van szükség.
| Érték | Név | Leírás |
|---|---|---|
0X0001 |
UPDATE |
A beolvasási puffer egy vagy több sorának frissítésére szolgál. A sorszám megadott sorok újra elérhetők és frissülnek. |
0x0002 |
DELETE |
A beolvasási puffer egy vagy több sorának törlésére szolgál. A sorszám megadott sorok újra elérhetők és törölve lesznek. |
0X0004 |
INSERT |
Adatok beszúrása INSERT utasítás létrehozása nélkül. |
0X0008 |
REFRESH |
A puffert a mögöttes táblákból tölti ki újra, és a sor frissítésére használható, ha egy frissítés vagy törlés optimista egyidejűség-vezérlés vagy egy UPDATEután meghiúsul. |
0X10 |
LOCK |
A megadott sort tartalmazó lapon frissítési zárolás (U) lesz beolvasva. Ez a zárolás kompatibilis a megosztott zárolásokkal (S), de nem kizárólagos zárolásokkal (X) vagy más frissítési zárakkal. Rövid távú zárolás implementálható. |
0X20 |
SETPOSITION |
Csak akkor használatos, ha a program egy későbbi DELETE vagy UPDATE utasítást fog kiadni. |
0X40 |
ABSOLUTE |
Csak UPDATE vagy DELETEhasználható.
ABSOLUTE csak KEYSET kurzorokkal használható (DYNAMIC kurzorok esetében figyelmen kívül hagyja), és STATIC kurzorok nem frissíthetők.Megjegyzés: Ha ABSOLUTE van megadva a kulcskészlet egyik sorában, amely nem lett beolvasva, a művelet meghiúsulhat az egyidejűség-ellenőrzés során, és a visszatérési eredmény nem garantálható. |
sorszám
Meghatározza, hogy a beolvasási puffer mely soraiban működik a kurzor, mely frissítéseket vagy törléseket végez. Ez a paraméter nem befolyásolja a RELATIVE, NEXTvagy PREVIOUS beolvasási művelet kezdőpontját, sem a sp_cursorhasználatával végrehajtott frissítéseket és törléseket.
sorszám egy kötelező paraméter, amely egy int bemeneti értéket hív meg.
1A beolvasási puffer első sorát jelöli.
2, 3, 4, ...nA második, a harmadik és a negyedik sort jelöli, és így tovább.
0A beolvasási puffer összes sorát jelzi.
Ez a paraméter csak UPDATE, DELETE, REFRESHvagy LOCKoptípusú értékekkel használható.
tábla
Az optípus- táblát azonosító táblanév akkor érvényes, ha a kurzordefiníció illesztést tartalmaz, vagy a érték paraméter nem egyértelmű oszlopneveket ad vissza. Ha nincs konkrét tábla kijelölve, az alapértelmezett érték a FROM záradék első táblája. A tábla paraméter nem kötelező, és sztringbemeneti értéket igényel. A sztring bármely karakter- vagy Unicode-adattípusként, illetve többrészes táblanévként is megadható.
érték
Értékek beszúrására vagy frissítésére szolgál. A érték sztringparaméter csak UPDATE és INSERToptípusú értékekkel használható. A sztring bármilyen karakterként vagy Unicode-adattípusként megadható.
A érték paraméternevét a felhasználó rendelheti hozzá.
Kódértékek visszaadása
0 (sikeres) vagy 1 (hiba).
Megjegyzések
A optype paraméter
Kivéve a SETPOSITIONUPDATE, DELETE, REFRESHvagy LOCK; vagy ABSOLUTEUPDATE vagy DELETEoptípusú értékek kölcsönösen kizárják egymást.
A UPDATE érték SET záradéka a érték paraméterből jön létre.
A INSERT <optype> érték használatának egyik előnye, hogy elkerülhető, hogy a nem karakteres adatokat karakterformátummá alakítsa a beszúrásokhoz. Az értékek ugyanúgy vannak megadva, mint UPDATE. Ha a szükséges oszlopok nem szerepelnek a fájlban, a INSERT sikertelen lesz.
- A
SETPOSITIONérték nem befolyásolja aRELATIVE,NEXTvagyPREVIOUSbeolvasási művelet kezdőpontját, és nem végez semmilyen frissítést vagy törlést asp_cursorfelületen. Bármely szám, amely nem ad meg egy sort a beolvasási pufferben, az1állásba kerül, hiba nélkül. ASETPOSITIONvégrehajtása után a pozíció mindaddig érvényben marad, amíg a következősp_cursorfetchművelet, a T-SQLFETCHművelet vagysp_cursorSETPOSITIONműveletet ugyanazon a kurzoron keresztül nem hajtja végre. Egy későbbisp_cursorfetchművelet a kurzor pozícióját az új beolvasási puffer első sorára állítja, míg más kurzorhívások nem befolyásolják a pozíció értékét.SETPOSITIONcsatolható egyORzáradékREFRESH,UPDATE,DELETEvagyLOCK, hogy a pozíció értékét az utolsó módosított sorra állítsa.
Ha a beolvasási puffer egyik sora nincs megadva a sorszám paraméteren keresztül, a pozíció értéke 1, hiba nélkül. A pozíció beállítása után mindaddig érvényben marad, amíg a következő sp_cursorfetch művelet, a T-SQL FETCH vagy sp_cursorSETPOSITION művelet ugyanazon a kurzoron nem lesz végrehajtva.
SETPOSITION csatolható egy OR záradék REFRESH, UPDATE, DELETEvagy LOCK, hogy a kurzor pozícióját az utolsó módosított sorra állítsa.
A sorszám paraméter
Ha meg van adva, a sorszám paraméter a lekérési pufferben lévő sorszám helyett a kulcskészleten belüli sorszámként értelmezhető. A felhasználó felelős az egyidejűség-vezérlés fenntartásáért. Ez azt jelenti, hogy SCROLL_LOCKS kurzorok esetében egymástól függetlenül kell fenntartania a zárolást az adott sorban (amely tranzakción keresztül is elvégezhető). A OPTIMISTIC kurzorok esetében a művelet végrehajtásához korábban be kell kérnie a sort.
A tábla paraméter
Ha a optype értéke UPDATE vagy INSERT, és a érték paraméterként egy teljes frissítési vagy beszúrási utasítást küld el, a tábla megadott értéke figyelmen kívül lesz hagyva.
Jegyzet
A nézetekhez kapcsolódóan csak egy, a nézetben részt vevő tábla módosítható. A értéknek paraméter oszlopneveinek tükrözniük kell a nézetben szereplő oszlopneveket, de a tábla neve lehet az alapul szolgáló alaptábla neve (ebben az esetben sp_cursor helyettesíti a nézet nevét).
A érték paraméter
Az argumentumok szakaszban korábban ismertetett érték használatára vonatkozó szabályok két alternatívát tartalmaznak:
Bármely elnevezett érték paraméterhez használhat olyan nevet, amely
@elő van állítva a választólistában szereplő oszlop nevére. Ennek az alternatívának az egyik előnye, hogy előfordulhat, hogy nincs szükség adatátalakításra.Egy paraméterrel elküldhet egy teljes
UPDATEvagyINSERTutasítást, vagy több paraméter használatával elküldheti egyUPDATEvagyINSERTutasítás egyes részeit, amelyeket az adatbázismotor ezután teljes utasítássá alakít. Példákat a cikk későbbi, Példák szakaszában talál.
Példák
Alternatív értékparaméter használata
FRISSÍTÉS esetén
Ha egyetlen paramétert használ, előfordulhat, hogy egy UPDATE utasítást a következő szintaxissal küld el:
[ [ UPDATE <table_name> ] SET ] { <column name> = expression } [ , ...n ]
Ha UPDATE <table_name> van megadva, a tábla paraméteréhez megadott értékek figyelmen kívül lesznek hagyva.
Ha több paramétert használ, az első paraméternek sztringnek kell lennie a következő formában:
[ SET ] <column name> = expression [ , ...n ]
A következő paramétereknek a következő formában kell lenniük:
<column name> = expression [ , ...n ]
Ebben az esetben a <table_name> a létrehozott frissítési utasításban az tábla paramétere által megadott vagy alapértelmezett érték.
AZ INSERT-hez
Ha egyetlen paramétert használ, előfordulhat, hogy egy INSERT utasítást a következő szintaxissal küld el:
[ [ INSERT [ INTO ] <table_name> ] VALUES ] ( <expression> [ , ...n ] )
Ha INSERT <table_name> van megadva, a tábla paraméteréhez megadott értékek figyelmen kívül lesznek hagyva.
Ha több paramétert használ, az első paraméternek sztringnek kell lennie a következő formában:
[ VALUES ] ( <expression> [ , ...n ] )
A következő paramétereknek expression [ , ...n ]formájában kell lenniük, kivéve, ha VALUES volt megadva, ebben az esetben az utolsó kifejezés után záró ) kell lennie. Ebben az esetben a <table_name> a létrehozott UPDATE utasításban az tábla paramétere által megadott vagy alapértelmezett érték.
Jegyzet
Egy paraméter elküldhető névvel ellátott paraméterként, például @values. Ebben az esetben más elnevezett paraméterek nem használhatók.