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 UPDATE utá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 DELETE haszná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
, NEXT
vagy PREVIOUS
beolvasási művelet kezdőpontját, sem a sp_cursor
haszná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.
1
A beolvasási puffer első sorát jelöli.
2, 3, 4, ...n
A második, a harmadik és a negyedik sort jelöli, és így tovább.
0
A beolvasási puffer összes sorát jelzi.
Ez a paraméter csak UPDATE
, DELETE
, REFRESH
vagy LOCK
optí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 INSERT
optí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 SETPOSITION
UPDATE
, DELETE
, REFRESH
vagy LOCK
; vagy ABSOLUTE
UPDATE
vagy DELETE
optí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
,NEXT
vagyPREVIOUS
beolvasási művelet kezdőpontját, és nem végez semmilyen frissítést vagy törlést asp_cursor
felületen. Bármely szám, amely nem ad meg egy sort a beolvasási pufferben, az1
állásba kerül, hiba nélkül. ASETPOSITION
végrehajtása után a pozíció mindaddig érvényben marad, amíg a következősp_cursorfetch
művelet, a T-SQLFETCH
művelet vagysp_cursor
SETPOSITION
műveletet ugyanazon a kurzoron keresztül nem hajtja végre. Egy későbbisp_cursorfetch
mű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.SETPOSITION
csatolható egyOR
záradékREFRESH
,UPDATE
,DELETE
vagyLOCK
, 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_cursor
SETPOSITION
művelet ugyanazon a kurzoron nem lesz végrehajtva.
SETPOSITION
csatolható egy OR
záradék REFRESH
, UPDATE
, DELETE
vagy 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
UPDATE
vagyINSERT
utasítást, vagy több paraméter használatával elküldheti egyUPDATE
vagyINSERT
utasí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.