gpt4 book ai didi

.net - Oracle 更新挂起

转载 作者:太空狗 更新时间:2023-10-30 01:45:11 26 4
gpt4 key购买 nike

我在更新 Oracle 时遇到问题。对 ExecuteNonQuery 的调用无限期挂起。

代码:

using (OracleCommand cmd = new OracleCommand(dbData.SqlCommandStr, conn))
{
foreach (string colName in dbData.Values.Keys)
cmd.Parameters.Add(colName, dbData.Values[colName]);

cmd.CommandTimeout = txTimeout;
int nRowsAffected = cmd.ExecuteNonQuery();
}

CommandTimeout 被设置为 5,参数被设置为小整数值。

查询:

UPDATE "BEN"."TABLE03" SET "COLUMN03"=:1,"COLUMN04"=:2 WHERE COLUMN05 > 0

查询从 sqlplus 运行得很快,通常从我的代码运行得很快,但偶尔它会永远挂起。

我在 v$locked_object 上运行了一个查询,并且有一条记录引用了这个表,但我认为那是未完成的更新。

有两件事我想知道:什么可能导致更新挂起?

更重要的是,为什么这里没有抛出异常?我希望调用等待五秒钟,然后超时。

最佳答案

由于它在搜索结果中的网页排名,我决定取消它。

在我的例子中,这是因为我在 SqlPlus 中执行了一个查询,但我忘了提交它。在这种情况下,正如 Vincent 所说:该行在另一个 session 中被锁定。

提交 SqlPlus 更新解决了这个问题。

关于.net - Oracle 更新挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1172378/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com