Sp_cursoropen (Transact-SQL)
Bir imleçaçar.sp_cursoropenimleç ve imleç seçenekleri ile ilişkili SQLdeyim tanımlar ve sonra imleçdoldurur. sp_cursoropenbirleşimi için eşdeğer olduğu Transact-SQL declare_cursor ve açık.Kimlik belirterek bu yordamı çağrılır = 2 tablo verisi akışı (TDS) paket.
Sözdizimi
sp_cursoropen cursor OUTPUT, stmt
[, scrollopt [ OUTPUT ] [ , ccopt [ OUTPUT ]
[ ,rowcount OUTPUT [ ,boundparam] [,...n] ] ] ] ]
Bağımsız değişkenler
cursor
SQL Server tarafından oluşturulan imleç tanıtıcısı.cursorolan bir ele imleçgibi ilgili tüm sonraki yordamlar sağlanması gereken değeri sp_cursorfetch.cursorgerekli bir parametre ile bir int dönüş değeri.cursorbir tek veritabanı bağlantısı üzerinde etkin olacak şekilde birden çok imleçler sağlar.
stmt
imleçsonuç kümesitanımlayan bir zorunlu parametredir. Herhangi bir geçerli sorgu dize (sözdizimi ve bağlama) (bakılmaksızın, Unicode, boyut, vs.) herhangi bir dize türü geçerli bir hizmet verebilir stmt değer türü.scrollopt
Seçenek'e gidin.scrolloptaşağıdakilerden birini gerektirir isteğe bağlı bir parametredir int giriş değerleri.Değer
Açıklama
0x0001
ANAHTAR KÜMESİ
0X0002
DİNAMİK
0X0004
FORWARD_ONLY
0X0008
STATİK
0x10
FAST_FORWARD
0x1000
PARAMETERIZED_STMT
0x2000
AUTO_FETCH
0x4000
AUTO_CLOSE
0x8000
CHECK_ACCEPTED_TYPES
0x10000
KEYSET_ACCEPTABLE
0x20000
DYNAMIC_ACCEPTABLE
0x40000
FORWARD_ONLY_ACCEPTABLE
0x80000
STATIC_ACCEPTABLE
0x100000
FAST_FORWARD_ACCEPTABLE
İstenen değer tarafından tanımlanan imleç için uygun değil olasılığı nedeniyle stmt, bu parametre gören olarak, hem girdi hem de çıktı.Bu gibi durumlarda SQL Server uygun bir değer atar.
ccopt
Eşzamanlılık denetim seçeneği.ccoptaşağıdakilerden birini gerektirir isteğe bağlı bir parametredir int giriş değerleri.Değer
Açıklama
0x0001
READ_ONLY
0X0002
scroll_locks (daha önce lockcc da bilinir)
0X0004
İYİMSER (daha önce optcc da bilinir)
0X0008
İYİMSER (daha önce optccval da bilinir)
0x2000
ALLOW_DIRECT
0x4000
UPDT_IN_PLACE
0x8000
CHECK_ACCEPTED_OPTS
0x10000
READ_ONLY_ACCEPTABLE
0x20000
SCROLL_LOCKS_ACCEPTABLE
0x40000
OPTIMISTIC_ACCEPTABLE
0x80000
OPTIMISITC_ACCEPTABLE
Olduğu gibi scrollopt, SQL Server Geçersiz istenen ccopt değerler.
rowcount
auto_fetch ile kullanılacak getirme arabellek satır sayısı.20 Satır varsayılandır.rowcountbir girdi değeri dönüş değeri karşılık olarak atanan farklı şekilde davranır.Giriş değeri olarak
Dönüş değeri olarak
Zaman auto_fetch scrollopt değeri belirtilen rowcount içine yerleştirmek için satır sayısını temsil edergetirme arabellek.
Not>auto_fetch belirtilen, ancak Aksi halde göz ardı geçerli bir değer 0'dır.sonuç kümesi, ne zaman dışında satır sayısını gösteren scrollopt auto_fetch değer belirtilmişse.
boundparam
Ek parametreler kullanımını gösterir.boundparamvarsa belirtilmesi isteğe bağlı bir parametredir scrollopt PARAMETERIZED_STMT değerdir küme için on.
Dönüş Kodu Değerleri
Herhangi bir hata ortaya çıkar, sp_cursoropen verir birini aşağıdaki değerleri.
0
Yordam başarıyla yürütüldü.0x0001
(Küçük bir hata, işlemde bir hata yükseltmek için değil ciddi yeterince) yürütme sırasında bir hata oluştu.0X0002
Zaman uyumsuz işlemi devam ediyor.0X0002
İşlemde getirme işlemidir.A
Bu imleç tarafından ayırmanın SQL Server ve kullanılamaz.
Bir hata ortaya çıktığında dönüş değerlerini tutarsız olabilir ve doğruluğu garanti edilemez.
Zaman rowcount parametresi belirtilen bir dönüş değeri aşağıdaki sonuç kümesi oluşur.
-1
Satır sayısı bilinmiyor veya geçerli değil ise döndürülür.-n
Bir zaman uyumsuz popülasyon etkin olduğunda döndürdü.Getirme yerleştirilmiş satır sayısını gösteren ne zaman arabellek scrollopt auto_fetch değer belirtilmişse.
rpc kullanılmıyorsa, dönüş değerleri aşağıdaki gibidir.
0
Yordam başarısız olur.1
Yordamı başarısız oldu.2
Anahtar kümesi imleç zaman uyumsuz olarak üretiliyor.16
Bir ileri sarma imleç otomatik olarak kapatıldı.
Not
sp_cursoropen Yordamı yürütür, rpc dönüş parametreleri ve bir sonuç kümesi TDSsütun biçimi bilgilerle (0xa0 & 0xa1 iletileri) gönderilir.Başarısız olursa, bir veya daha fazla TDS hata iletileri gönderilir.Her iki durumda, hiçbir satır verisi döndürülmeyecek ve Bitti ileti sayısı sıfır olacaktır.' In bir sürüm kullanıyorsanız SQL Server 7.0'den önceki 0xa0, 0xa1 (standart select deyimlerinin) dönen ile birlikte 0xa5 ve 0xa4 token akışları.Kullanıyorsanız, SQL Server 7.0 0x81 (standart select deyimleri için) döndürülen 0xa5 ve 0xa4 token akışlarını. ile birlikte
Açıklamalar
stmt parametresi
stmt Yürütme belirtir bir saklı yordam, giriş parametreleri bir parçası olarak sabitler olarak da tanımlanabilir stmtdize, ya da belirtildiği gibi boundparam bağımsız değişkeni.Bu şekilde ilişkili parametre olarak bildirilen değişkenler geçirilebilir.
İzin verilen içeriğini stmt parametresi alınıp alınmayacağını bağımlı ccopt ALLOW_DIRECT dönüş değeri bağlı ya da geri kalanı için ccopt değerler, yani:
ALLOW_DIRECT, ya da belirtilmemişse, bir Transact-SQL seçin veya execute deyim tek bir select deyim içeren bir saklı yordam kullanılmalıdır için çağrı.Ayrıca, select deyim imleçolarak nitelemeniz gerekir; yani, select INTO, GÖZATMAK veya compute anahtar sözcükler içeremez.
ALLOW_DIRECT belirtilirse, bu bir veya daha fazla neden olabilir Transact-SQL ifadeleri, dahil olanlar, sırasıyla yürütmek diğer saklı yordamlar ile birden çok deyimleri.Non-select deyimleri veya anahtar sözcükleri içeren herhangi bir select deyim Sgöz içine, SEÇMEDİĞİNİZ veya compute basitçe yürütülecek ve imleçoluşturulmasında yol açmayacaktır.Aynı toplu iş birden çok deyimleri dahil herhangi bir select deyim için geçerlidir.Burada bir select deyim yalnızca imleçler için ilgili yan tümceleri içeren durumlarda, bu yan tümceleri dikkate alınmaz.İçin örnek, ne zaman değeri ccopt 0x2002, iş isteği budur:
Bir imleç kaydırma kilitler, bir imleçniteleyen yalnızca tek bir select deyim ise veya
Birden çok ifade, tek bir select deyimveya imleçolarak nitelemek değil bir select deyim varsa doğrudan deyim yürütme.
scrollopt parametresi
İlk beş scrollopt (keysey, dinamik, forward_only, statik ve fast_forward) değerler birbirini özel.
PARAMETERIZED_STMT ve check_accepted_types ya da ilk beş değerleri için bağlanabilir.
auto_fetch ve auto_close tarafından veya fast_forward bağlanabilir.
check_accepted_types on, son beş en az biri ise scrollopt değerleri (keyset_acceptable, DYNAMIC_ACCEPTABLE, forward_only_acceptable, STATIC_ACCEPTABLE veya fast_forward_acceptable) de açık olmalı.
Statik İmleçler her zaman read_only açılır.Yani, temel tablo bu imleçgüncelleştirilemiyor.
ccopt parametresi
İlk dört ccopt (read_only, scroll_locks ve her ikisi de İYİMSER değerleri) değerler birbirini özel.
Not
İlk dört birini seçerek ccopt imleç salt okunur olup olmadığını veya kilitleme veya iyimser yöntemleri önlemek için kullanılan değerleri kullanılması belirlerkayıp güncelleştirmeleri.Yoksa bir ccopt değer belirtilmezse, varsayılan değer ise İYİMSER.
ALLOW_DIRECT ve check_accepted_types tarafından veya ilk dört değerlerden herhangi birine bağlanabilir.
UPDT_IN_PLACE, read_only, scroll_locks ya da İYİMSER değerlerden birini ya da bağlanabilir.
check_accepted_types on, son dört en az biri olup ccopt (read_only_acceptable, scroll_locks_acceptable ve OPTIMISTIC_ACCEPTABLE değerleri biri) değerleri de olması gerekir açık.
Yalnızca alma arabelleği ve yalnız içinde konumlandırılmış update ve delete İşlevler'in yapılmalıdır ccopt değer eşittir scroll_locks ya da İYİMSER.scroll_locks belirtilen değer, işlemin başarılı olması için sağlanır.İYİMSER belirtilen değeri ise, son getirilen satır değişmişse, işlem başarısız olur.
Bu başarısızlık İYİMSER belirtilen değer olduğunda, İyimser bir para işlev denetlemek için neden tarafından belirlenen zaman damgaları veya sağlama toplamı değeri karşılaştırarak gerçekleştirilir SQL Server.Bu satırlar biriyle eşleşmiyorsa, işlem başarısız olur.
Dönüş değeri UPDT_IN_PLACE belirten aşağıdaki sonuçlaryönetir:
Yoksa bir konumlandırılmış güncelleştirme bir tablo ile bir benzersiz dizin imleç gerçekleştirirken küme , iş tablo satırı siler ve sonunda, böylece bu sütunları değiştirme imleçtarafından kullanılan anahtar sütunu ekler.
küme on imleç yalnızca özgün çalışma tablosatır anahtar sütunlarında güncelleştirir.
bound_param parametresi
Parametre adı olmalıdır paramdef , PARAMETERIZED_STMT belirtildiğinde, hata iletisinde uyarıncakod.PARAMETERIZED_STMT belirtilmediği durumlarda adı yok hata iletisinde belirtilir.
rpc dikkat edilmesi gereken noktalar
rpc return_metadata giriş bayrağını küme için imleç seçim listesi meta veriler TDS akış döndürülmesi istemek için 0x0001 olabilir.
Örnekler
bound_param parametresi
Beşinci sonra herhangi bir parametre boyunca deyim planı için girdi parametresi olarak iletilir.İlk tür parametresi bir dize biçiminde olması gerekir:
{ yerel değişken adı veri türü} [, …n]
Sıralı parametreler için yerine kullanılacak değerleri geçirmek için kullanılan local variable name deyim.
Ayrıca bkz.