sp_cursorfetch (Transact-SQL)
Veritabanından bir veya daha fazla satır arabellek getirir.Bu arabelleğindeki satır grubunu imleç's denir alma arabelleği.sp_cursorfetch is invoked by specifying ID = 7 in a tabular data stream (TDS) packet.
Transact-SQL sözdizimi kuralları
Sözdizimi
sp_cursorfetch cursor
[ , fetchtype [ , rownum [ , nrows ] ] ]
Bağımsız değişkenler
cursor
Olan bir ele tarafından üretilen değer SQL Server ve tarafından döndürülen sp_cursoropen.cursorçağıran için gerekli bir parametre bir int Giriş değeri.Daha fazla bilgi için bu konunun ilerisinde açıklamalar bölümüne bakın.fetchtype
Getirmek için hangi imleç arabelleği belirtir.fetchtypeAşağıdaki tamsayı girdi değerlerden birini gerektiren bir isteğe bağlı parametredir.Değer
Ad
Açıklama
0x0001
İLK
İlk arabelleği getirir nrows satır.nrows Eşittir 0, sonuç kümesi önce imleç konumlandırılmış ve hiçbir satır döndürdü.
0X0002
SONRAKİ
Sonraki arabelleği getirir nrows satır.
0X0004
ÖNCEKİ
Önceki arabelleği getirir nrows satır.
Notforward_only yalnızca tek yönde kaydırma desteklediğinden önceki için forward_only imleç kullanarak bir hata iletisi döndürür.0X0008
SON
Son arabellek getirir nrows satır.nrows Eşittir 0, sonuç kümesi sonra imleç konumlandırılmış ve hiçbir satır döndürdü.
Notforward_only yalnızca tek yönde kaydırma desteklediğinden son için forward_only imleç kullanarak bir hata iletisi döndürür.0x10
MUTLAK
Bir arabelleğin getirir nrows ile başlayan satırlar rownum satır.
Notforward_only yalnızca tek yönde kaydırma desteklediğinden dinamik bir imleç veya imleç forward_only için mutlak kullanarak bir hata iletisi döndürür.0x20 değerli
GÖRELİ
Arabelleğin getirir nrows olarak belirtilen satır ile başlayan satırlar rownum ilk satırın geçerli bloksatır değerinin.Bu durum rownum olabilir negatif bir sayı.
Notforward_only yalnızca tek yönde kaydırma desteklediğinden forward_only imleç için GÖRELİ kullanarak bir hata iletisi döndürür.0x80
YENİLEME
Alttaki tablodan arabellek refills.
0x100
INFO
imleçhakkındaki bilgileri alır.Bu bilgileri kullanarak döndürülen rownum ve nrows parametreleri.Bu nedenle, ne zaman bilgi belirtildiyse, rownum ve nrows haline çıkış parametreleri.
0x200
PREV_NOADJUST
Devir gibi kullanılırsonuç kümesi üstündeki zamanından önce ortaya çıkarsa, ancak sonuçlar değişebilir.
0x400
SKIP_UPDT_CNCY
Biri diğeri ile kullanılması gereken fetchtype , dışındaki değerleri CAD.
Not
0X40 değeri için destek yoktur.
Daha fazla bilgi için bu konunun ilerisinde açıklamalar bölümüne bakın.
rownum
MUTLAK ve bilgi için satır konumu belirtmek için kullanılan isteğe bağlı bir parametredir fetchtype giriş ve çıkış veya her ikisi de yalnızca tamsayı değerleri kullanarak değerleri.rownumSatır kaydırma için görevi gören fetchtype bit değeri GÖRELİ.rownumdiğer tüm değerleri göz ardı edilir.Daha fazla bilgi için bu konunun ilerisinde açıklamalar bölümüne bakın.nrows
Getirmek için satır sayısını belirtmek için kullanılan isteğe bağlı bir parametre olduğu.nrows Belirtilmezse, varsayılan değer olan 20 satır.Pozisyon veriyor, olmadan küme için0 değerini belirtin.Zaman nrows uygulandığı fetchtype bilgi sorgu verdiği toplam satır sayısını öğrenmek bu sorgu.Not
nrowsYENİLEYEREK göz ardı fetchtype bit değer.
Daha fazla bilgi için bu konunun ilerisinde açıklamalar bölümüne bakın.
Dönüş Kodu Değerleri
BİLGİ bit değeri belirttiğinizde, döndürülebilir değerler aşağıdaki tabloda gösterilmiştir.
Not
: Hiçbir satır döndürmezse, arabellek içeriği oldukları gibi kalır.
<rownum> |
Ayarlamak |
---|---|
Aksi takdirde açın |
0 |
sonuç kümesiönce konumlandırdıysanız |
0 |
sonuç kümesisonra konumlandırdıysanız |
-1 |
Anahtar KÜMESİ ve statik imleçler için |
sonuç kümesigeçerli konumu mutlak satır sayısı |
DİNAMİK imleçler için |
1 |
İçin mutlak |
-1, bir kümeiçinde son satır döndürür. -2 saniye son satırda bir kümevb. döndürür.
Not
Bu durumda getirilmesi için birden fazla satır isteniyorsa son iki satırdaki sonuç kümesi döndürülür.
|
<nrows> |
Ayarlamak |
---|---|
Aksi takdirde açın |
0 |
Anahtar KÜMESİ ve statik imleçler için |
Genellikle, geçerli anahtar kümesi boyutu. –m imleç ile zaman uyumsuz oluşturma ise m satırlar Bu noktaya bulundu. |
DİNAMİK imleçler için |
-1 |
Açıklamalar
imleç Parametre
Edilmiştir önce getirme işlemleri, varsayılan imleç sonuç kümesiilk satırın öncesine konumudur.
fetchtype parametresi
Haricinde, SKIP_UPD_CNCY, fetchtype değerler birbirini özel.
SKIP_UPDT_CNCY belirtildiğinde, bir satır getirilen ya da yenilenmesi zaman damgası sütun değerlerini anahtar kümesi tablo yazılmaz.Anahtar kümesi satırı güncelleştirilirse, zaman damgası sütun değerleri önceki değeri olarak kalır.Anahtar kümesi satır eklenirse, zaman damgası sütunları değerleri tanımsızdır.
Biri yapıldıysa anahtar KÜMESİ imleç için bu anahtar kümesi tablo değerleri küme getirme, son nonskip sırasında sahip olduğu anlamına gelir.Aksi takdirde, değerleri küme popülasyonsırasında yoktur.
DİNAMİK imleçler için Atla ile yenileme gerçekleştirilirse, bu anahtar KÜMESİ aynı sonuçlar üretir yani.Diğer getirme türü için anahtar kümesi tablo kesirli kısmı atılır.Başka bir deyişle, satır eklenir ve zaman damgası sütun(s) değerleri tanımsızdır.Bu nedenle, çalıştırdığınızda sp_cursorfetch dinamik imleçler için kaçının dışında herhangi bir işlem için SKIP_UPDT_CNCY kullanmayenileme.
kümesonuç kümesiönce istenen imleç konumu yerleştirilmiş olduğundan getirme işlemi başarısız olursa, imleç ilk satırın önce küme konumdur.
ile belirtilen parametre
Kullandığınızda, rownum, arabellek başlayarak doldurulurbelirtilen satır.
fetchtype Konumunu başvurduğu mutlak değeri rownum tam sonuç kümesiiçinde.İşlem satır sonundan sonuç kümesisayılır mutlak ile negatif bir sayı belirtir.
fetchtype Değeri GÖRELİ konumunu gösterir rownum başlangıcında imleç konumuna bağlı olarakgeçerli arabellek.imleç geçerli imleç konumundan geri gitmek göreli negatif bir sayı belirtir.
nrows parametresi
fetchtype Yenileme ve bilgi değerleri göz ardı Bu parametre.
Ne zaman sizin belirlediğiniz bir fetchtype olan ilk değeri bir nrow sonuç kümesi , hiçbir satır getirme arabellek önce değeri 0, imleç konumlandırılmış
Ne zaman sizin belirlediğiniz bir fetchtype değeri olan son bir nrow sonuç kümesi , hiçbir satır geçerli getirme arabellek sonra değeri 0, imleç konumlandırılmış
İçin fetchtype sonraki, önceki, mutlak, GÖRECELİ ve prev_noadjust, bir nrow 0 değeri geçerli değil.
rpc dikkat edilmesi gereken noktalar
rpc dönüş durumu anahtar kümesi boyutu parametresi, diğer bir deyişle anahtar kümesi veya geçici tablo zaman uyumsuz olarak doldurulurken, son olup olmadığını gösterir.
rpc durum küme için aşağıdaki tablogösterilen değerlere parametresidir.
Değer |
Açıklama |
---|---|
0 |
Yordam başarıyla yürütüldü. |
0x0001 |
Yordamı başarısız oldu. |
0X0002 |
Getirme negatif yönde küme sonuç kümesi, başlangıcına getirme mantıksal olarak önce sonuçlarolacaktı zaman edilecek imleç konumu nedeniyle. |
0x10 |
Bir ileri sarma imleç otomatik olarak kapatıldı. |
Satırları bir tipik sonuç kümesiolarak, yani döndürülür: sütun biçimi (0x2a) satır (0xd1) ve ardından Bitti'yi (0xfd) tarafından.Meta veri belirteçleri için belirtildiği gibi aynı biçimde gönderilen sp_cursoropen, yani: 0x81 0xa5 ve SQL Server 7.0 kullanıcıları, vb. 0xa4.Satır durumu göstergelerini gizli sütunları, sütun adı ile her satır sonunda Gözat moduna benzer olarak gönderilen rowstat ve veri türü INT4.Bu rowstat sütun aşağıdaki tablogösterilen değerlere biri vardır.
Değer |
Açıklama |
---|---|
0x0001 |
FETCH_SUCCEEDED |
0X0002 |
FETCH_MISSING |
Sonunda durum sütun olmadan gönderilemez TDSprotokol sağlar çünkü önceki sütun, göstermelik veri gönderme eksik satırları (nullable alanlar küme alanlarını uzunluğu küme için 0, boş, sabit nullveya sütun, uygun varsayılan) gönderilir.
done rowcount her zaman sıfır olacak.Gerçek sonuç kümesi rowcount done iletiyi içerir ve hata veya bilgi iletilerinin günlüğünün arasında herhangi bir TDS iletisi görüntülenebilir.
Bu imleçhakkındaki meta veriler istemek için 's seçim listesi döndürülmesi TDS akış olarak küme rpc return_metadata giriş bayrağı 1 olarak.
Örnekler
A.ÖNCEKİ bir imleç konumu değiştirmek için kullanma
Bir imleç h2 gösterilen geçerli konumu ile aşağıdaki içeriğe sahip bir sonuç kümesi üretir varsayılmaktadır:
row 1 contents
row 2 contents
row 3 contents
row 4 contents <-- current position
row 5 contents
row 6 contents
İleri bir sp_cursorfetch olan önceki bir nrows değeri 5 mantıksal olarak konumlandırmak imleç iki satır sonuç kümesiilk satırı önce.Bu gibi durumlarda, imleç ilk satır sonunda başlatın ve istenen satır sayısını döndürmek için ayarlanır.Bu, sık sık önceki getirme arabellekte olan satırlar dönmek anlamına gelir.
Not
rpc durum parametresi küme 2 olduğu tam durum budur.
B.Önceki'den daha az satır dönmek için prev_noadjust kullanma
prev_noadjust hiçbir zaman herhangi bir at veya geçerli imleç konumu döndürdüğü satır blok sonra satırları içerir.Burada önceki verir satır geçerli konumdan sonrasını durumlarda, prev_noadjust, istenenden daha az sayıda satır döndürür nrows.Verilen örnek geçerli konumu önceki, ne zaman önceki uygulanır, a sp_cursorfetch(h2, 4, 1, 5), aşağıdaki satırları getirir:
row1 contents
row2 contents
row3 contents
row4 contents
row5 contents
Ancak, ne zaman prev_noadjust uygulanır, sp_cursorfetch(h2, 512, 6, 5) yalnızca aşağıdaki satırları getirir:
row1 contents
row2 contents
row3 contents
Ayrıca bkz.