[英]Entity Framework - Stored Procedure result as an entity without Primary Key
[英]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.