sp_cursorprepexec (Transact-SQL)
適用於:SQL Server
Azure SQL 資料庫
Azure Synapse Analytics Analytics
Platform System (PDW)
編譯提交之數據指標語句或批次的計劃,然後建立並填入數據指標。 sp_cursorprepexec
結合 和sp_cursorexecute
的sp_cursorprepare
函式。 這個程式是藉由在表格式數據流 (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 產生的 數據指標 標識碼。 cursor 是必要參數,必須提供在這個資料指標上的所有後續程式上,例如 。 sp_cursorfetch
params
識別參數化語句。 變數的參數定義會取代 語句中的參數標記。 params 是呼叫 ntext、nchar 或 nvarchar 輸入值的必要參數。
注意
當語句參數化且 scrollopt PARAMETERIZED_STMT 值為 ON 時,請使用 ntext 字串作為輸入值。
陳述式
定義數據指標結果集。 語句參數是必要的,而且會呼叫 ntext、nchar 或 nvarchar 輸入值。
注意
指定語句值的規則與 的sp_cursoropen
規則相同,但語句字串數據類型必須是 ntext 的例外狀況。
options
選擇性參數,會傳回數據指標結果集數據行的描述。 選項 需要下列 int 輸入值。
值 | Description |
---|---|
0x0001 | RETURN_METADATA |
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 是選擇性參數,需要下列 其中一個 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時,代表要放入提取緩衝區的數據列數目。 | 表示結果集中的數據列數目。 指定 scrollopt AUTO_FETCH 值時,rowcount 會傳回擷取至提取緩衝區的數據列數目。 |
parameter_name
指定參數自變數中所定義的一或多個參數名稱。 參數必須針對參數中包含的每個參數提供參數。 當 Params 中的 Transact-SQL 語句或批次未定義任何參數時,就不需要此自變數。
傳回碼值
如果 params 傳回 NULL 值,則語句不會參數化。
範例
這個範例示範 如何使用 sp_cursorprepexec
。 它會針對 Person
資料庫中的數據表 AdventureWorks2022
執行查詢,並傳回名字為 「Katherine」 的所有記錄。
USE AdventureWorks2022;
GO
DECLARE @prep_handle INT,
@cursor INT,
@scrollopt INT = 4104,
@ccopt INT = 8193,
@rowcnt INT;
EXEC 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';
EXEC sp_cursorfetch @cursor;