共用方式為


sp_cursorprepexec (Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics分析平台系統(PDW)Microsoft Fabric 中的 SQL 資料庫

編譯提交之數據指標語句或批次的計劃,然後建立並填入數據指標。 sp_cursorprepexec結合 和sp_cursorpreparesp_cursorexecute函式。 這個程式是藉由在表格式數據流 (TDS) 封包中指定 ID = 5 來叫用。

Transact-SQL 語法慣例

語法

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

引數

重要

擴充預存程式的自變數必須依特定順序輸入,如 語法 一節所述。 如果參數依序輸入,就會發生錯誤訊息。

備妥句柄

SQL Server 產生的 備妥句柄 標識碼。 準備好的 句柄 參數是必需的,並傳回 int

cursor

SQL Server 產生的 數據指標 標識碼。 游標參數是必要參數,必須在作用於此游標的所有後續程序上提供,例如 sp_cursorfetch

params

識別參數化語句。 變數的參數定義會取代 語句中的參數標記。 params 參數是必需的。 指定時, params 會呼叫 ntextncharnvarchar 輸入值。

注意

當語句參數化且 scrollopt PARAMETERIZED_STMT 值為 ON 時,請使用 ntext 字串作為輸入值。

陳述式

定義數據指標結果集。 語句參數是必要的,而且會呼叫 ntextnchar 或 nvarchar 輸入值。

注意

指定 陳述式 值的規則與 sp_cursoropen相同,但 陳述式 字串資料類型必須是 ntext

options

選擇性參數,會傳回數據指標結果集數據行的描述。 options 參數需要下列 int 輸入值。

Description
0x0001 RETURN_METADATA

scrollopt

捲動選項。 scrollopt 參數是選用的。 指定時, scrollopt 需要下列其中一個 int 輸入值。

Description
0x0001 KEYSET
0x0002 DYNAMIC
0x0004 FORWARD_ONLY
0x0008 STATIC
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

由於要求的選項可能不適用於語句定義的數據指標,因此此參數可做為輸入和輸出。 在這種情況下,SQL Server 會指派適當的類型,並修改此值。

ccopt

並行控制選項。 ccopt 參數是選用的。 指定時, ccopt 參數需要下列其中一個 int 輸入值。

Description
0x0001 READ_ONLY
0x0002 SCROLL_LOCKS (先前稱為 LOCKCC)
0x0004 開放式 (先前稱為 OPTCC)
0x0008 開放式 (先前稱為 OPTCCVAL)
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

如同 scrollopt,SQL Server 可以指派與所要求的值不同的值。

rowcount

選用參數,表示要與 AUTO_FETCH一起使用的提取緩衝區列數。 預設值為20個數據列。 rowcount 參數在指派為輸入值與傳回值時的行為會有所不同。

作為輸入值 作為傳回值
使用 FAST_FORWARD數據指標 數據列計數 指定AUTO_FETCH時,代表要放入提取緩衝區的數據列數目。 表示結果集中的數據列數目。 指定 scrolloptAUTO_FETCH 值時, rowcount 會傳回提取至提取緩衝區的列數。

parameter_name

指定 params 參數中定義的一或多個參數名稱。 參數必須針對參數中包含的每個參數提供參數。 當 params 中的 Transact-SQL 陳述式或批次未定義參數時,不需要此參數。

傳回碼值

如果 params 值傳回 NULL,則陳述式不會參數化。

範例

這個範例示範 如何使用 sp_cursorprepexec。 它會針對資料庫中的資料表執行 Person 查詢, AdventureWorks2025 傳回名字為「Kirby」的所有記錄。

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;