在 Oracle 中将列值增加一 - (ORA-01013)

Increment column value by one in Oracle - (ORA-01013)

我有以下更新语句,它在 SQL 开发人员中运行良好:

UPDATE SDUSERS SET PWDATTEMPTS=PWDATTEMPTS+1 WHERE lower(UserName)='test';

现在,在我的 VB.NET 中,由于某种原因它没有更新数据库并产生错误 ORA-01013:用户请求取消当前操作,错误代码:-2147467259

Dim sqlUpdateFailed As New OracleCommand("UPDATE " & oConnection.SCHEMA_NAME.ToUpper 
 & "SDUSERS SET PWDATTEMPTS=PWDATTEMPTS+1 WHERE lower(USERNAME)='" & sUsername & "'", conn)
                sqlUpdateFailed.CommandTimeout = 20
                sqlUpdateFailed.ExecuteNonQuery()

知道我做错了什么吗?

在您的案例中,ORA-1013 的原因很可能是达到了查询执行超时。检查一下,尝试一些大的超时值。

这样的更新应该执行得很快,非常快(我猜 table 很小,不是吗?)所以如果挂起就意味着记录被锁定了。也许您将此记录更新为 SQL Developer 并忘记提交,也许是其他内容。您可以检查它是否在更新语句之前执行类似 SELECT * FROM SDUSERS WHERE lower(UserName) = :username FOR UPDATE NOWAIT 的操作。

顺便说一句,您的来源提供了 SQL Injection.

的出色能力