簡體   English   中英

如何在沒有存儲過程的情況下獲取更新的行主鍵

[英]How to get the updated rows primary key without stored procedure

我有一種情況,我需要在一個簡單的更新語句中檢索更新行的主鍵。 我從 Oracle 中找到了“RETURNING INTO”子句,但找不到使用 C# 從更新的行中檢索所有主鍵的方法,而無需創建存儲過程。 邏輯很簡單,更新一些行,獲取它們的 ID,這樣多個線程就可以處理多組更新的行。 有沒有可能實現?

您不需要創建存儲過程,但它不適用於簡單的更新語句。 你至少需要這樣的聲明:

DECLARE t_ids id_array;
BEGIN
UPDATE table
SET field1 = :value
WHERE field2 = :searchFor
RETURNING key_column BULK COLLECT INTO t_ids;

OPEN :rcursor FOR SELECT * FROM TABLE(cast(t_ids as id_array));
END;

這將返回一個參考 cursor 您可以在 c# 中處理

OracleCommand command = new OracleCommand("<the sql query above>", connection);
command.BindByName = true;

// Add the parameters for update statement
// ...

// Add the out parameter for the ref cursor
OracleParameter refCursor = new OracleParameter("rcursor", OracleDbType.RefCursor);
refCursor.Direction = ParameterDirection.ReturnValue;
command.Parameters.Add(returnCursor);

var reader = command.ExecuteReader();

OracleDataAdapter dataAdapter = new OracleDataAdapter(command);
DataTable dt = new DataTable();
dataAdapter.Fill(dt);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM