Aracılığıyla paylaş


sp_cursorprepexec (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnalytics Platform Sistemi (PDW)Microsoft Fabric SQL veritabanı

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ırlanan tanıtıcı parametresi gereklidir ve int döndürür.

İmleç

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

parametreler

Parametreli deyimleri tanımlar. değişkenlerin parametreleri deyimindeki parametre işaretçileri ile değiştirilir. params parametresi gereklidir. Belirtildiğinde , params bir ntext, nchar veya nvarchar giriş değeri çağırır.

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

Deyim değerini belirtme kuralları, deyimdizesi veri türünün ntext olması dışında sp_cursoropen ile 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. options parametresi aşağıdaki int giriş değerini gerektirir.

Değer Açıklama
0x0001 RETURN_METADATA

scrollopt

Kaydırma seçeneği. scrollopt parametresi isteğe bağlıdır. Belirtildiğinde, scrollopt aşağıdaki int giriş değerlerinden birini gerektirir.

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 parametresi isteğe bağlıdır. Belirtildiğinde , ccopt parametresi aşağıdaki int giriş değerlerinden birini gerektirir.

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ı

ile AUTO_FETCHkullanı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. Rowcount parametresi, giriş değeri olarak atandığında ve dönüş değerine göre 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. ScrolloptAUTO_FETCH değeri belirtildiğinde, rowcount getirme arabelleğine getirilen satır sayısını döndürür.

parameter_name

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

Dönüş kodu değerleri

params değeri döndürürseNULL, deyimi parametreli değildir.

Örnekler

Bu örnekte sp_cursorprepexeckullanımı gösterilmektedir. Adı "Kirby" olan tüm kayıtları döndüren veritabanındaki tabloya Person karşı AdventureWorks2025 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,
    'Kirby';

EXECUTE sp_cursorfetch @cursor;