適用於:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
分析平台系統(PDW)
Microsoft Fabric 中的 SQL 資料庫
編譯提交之數據指標語句或批次的計劃,然後建立並填入數據指標。
sp_cursorprepexec結合 和sp_cursorprepare的sp_cursorexecute函式。 這個程式是藉由在表格式數據流 (TDS) 封包中指定 ID = 5 來叫用。
語法
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 會呼叫 ntext、 nchar 或 nvarchar 輸入值。
注意
當語句參數化且 scrollopt PARAMETERIZED_STMT 值為 ON 時,請使用 ntext 字串作為輸入值。
陳述式
定義數據指標結果集。 語句參數是必要的,而且會呼叫 ntext、nchar 或 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;