Aracılığıyla paylaş


sp_cursorprepexec (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure Synapse AnalyticsAnalytics Platform Sistemi (PDW)

Gönderilen imleç deyimi veya toplu iş için bir plan derler, ardından imleci oluşturur ve doldurur. sp_cursorprepexec, sp_cursorprepare ve sp_cursorexecuteişlevlerini birleştirir. Bu yordam, tablosal veri akışı (TDS) paketinde ID = 5 belirtilerek çağrılır.

Transact-SQL söz dizimi kuralları

Sözdizimi

sp_cursorprepexec prepared handle OUTPUT , cursor OUTPUT , params , statement , options
    [ , scrollopt [ , ccopt [ , rowcount ] ] ]
    [ , '@parameter_name [ , ...n ]' ]

Bağımsız değişken

Önemli

Genişletilmiş saklı yordamlar için bağımsız değişkenler, Sözdizimi bölümünde açıklandığı gibi belirli bir sırada girilmelidir. Parametreler sıra dışı girilirse bir hata iletisi oluşur.

hazırlanmış tutamaç

SQL Server tarafından oluşturulan hazırlanmış tanıtıcı tanımlayıcısı. hazırlanmış tanıtıcı gereklidir ve intdöndürür.

İmleç

SQL Server tarafından oluşturulan imleci tanımlayıcı. imleç, bu imleç üzerinde hareket eden sonraki tüm yordamlarda ( örneğin, sp_cursorfetch) sağlanması gereken bir parametredir.

parametreler

Parametreli deyimleri tanımlar. değişkenlerin parametreleri deyimindeki parametre işaretçileri ile değiştirilir. params, ntext, ncharveya nvarchar giriş değerini çağıran gerekli bir parametredir.

Not

deyimi parametrelendirildiğinde ve scrollopt PARAMETERIZED_STMT değeri AÇILDI olduğunda giriş değeri olarak ntext dizesi kullanın.

deyimi

İmleç sonuç kümesini tanımlar. deyimi parametresi gereklidir ve ntext, ncharveya nvarchar giriş değerini çağırır.

Not

deyimi değerini belirtme kuralları, deyimi dize veri türünün ntext olması dışında sp_cursoropenile aynıdır.

seçenekleri

İmleç sonuç kümesi sütunlarının açıklamasını döndüren isteğe bağlı bir parametre. seçenekleri aşağıdaki int giriş değerini gerektirir.

Değer Açıklama
0x0001 RETURN_METADATA

scrollopt

Kaydırma seçeneği. scrollopt, aşağıdaki int giriş değerlerinden birini gerektiren isteğe bağlı bir parametredir.

Değer Açıklama
0x0001 KEYSET
0x0002 DİNAMİK
0x0004 FORWARD_ONLY
0x0008 DURUK
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 seçeneğin deyimi tarafından tanımlanan imleç için uygun olma olasılığı nedeniyle, bu parametre hem giriş hem de çıkış görevi görür. Bu gibi durumlarda, SQL Server uygun bir tür atar ve bu değeri değiştirir.

Eşzamanlılık denetimi seçeneği. ccopt, aşağıdaki int giriş değerlerinden birini gerektiren isteğe bağlı bir parametredir.

Değer Açıklama
0x0001 READ_ONLY
0x0002 SCROLL_LOCKS (eski adıyla LOCKCC)
0x0004 IYIMSER (daha önce OPTCC olarak bilinirdi)
0x0008 IYIMSER (daha önce OPTCCVAL olarak bilinirdi)
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

scrolloptgibi, SQL Server istenenden farklı bir değer atayabilir.

satır sayısı

AUTO_FETCH ile kullanılacak getirme arabellek satırlarının sayısını belirten isteğe bağlı bir parametre. Varsayılan değer 20 satırdır. satır sayısı, giriş değeri olarak atandığında ve dönüş değeri olarak atandığında farklı davranır.

Giriş değeri olarak Dönüş değeri olarak
AUTO_FETCH FAST_FORWARD imleçlerle belirtildiğinde satır sayısı getirme arabelleğine yerleştirecek satır sayısını temsil eder. Sonuç kümesindeki satır sayısını temsil eder. scrollopt AUTO_FETCH değeri belirtildiğinde, satır sayısı getirme arabelleğine getirilen satır sayısını döndürür.

parameter_name

parametreler bağımsız değişkeninde tanımlandığı gibi bir veya daha fazla parametre adı belirtir. parametrelere dahil edilen her parametre için bir parametre sağlanmalıdır. parametreler Transact-SQL deyiminde veya toplu işte tanımlı parametre olmadığında bu bağımsız değişken gerekli değildir.

Dönüş kodu değerleri

parametrelerNULL bir değer döndürürse, deyimi parametreli değildir.

Örnekler

Bu örnekte sp_cursorprepexeckullanımı gösterilmektedir. adı "Katherine" olan tüm kayıtları döndüren AdventureWorks2022 veritabanındaki Person tablosunda bir sorgu çalıştırır.

USE AdventureWorks2022;
GO

DECLARE @prep_handle INT,
    @cursor INT,
    @scrollopt INT = 4104,
    @ccopt INT = 8193,
    @rowcnt INT;

EXECUTE sp_cursorprepexec
    @prep_handle OUTPUT,
    @cursor OUTPUT,
    N'@fName nvarchar(100)',
    N'SELECT FirstName, LastName FROM Person.Person WHERE FirstName = @fName',
    @scrollopt,
    @ccopt,
    @rowcnt OUTPUT,
    'Katherine';

EXECUTE sp_cursorfetch @cursor;