Oracle中的参数化查询出了问题

Jam*_*lor 17 asp.net oracle

我正在使用Oracle.DataAccess而不是过时System.Data.OracleClient,我似乎无法将多个参数传递给我的更新查询

这有效

OracleCommand.CommandText = "UPDATE db SET column1 = :param1 WHERE column2 = 'Y'"
OracleCommand.Parameters.Add(New OracleParameter("param1", "1234"))
Run Code Online (Sandbox Code Playgroud)

但我希望能够传递多个参数

这是我的完整代码

    OracleConn.Open()
    OracleCommand = OracleConn.CreateCommand()
    OracleCommand.CommandText = "UPDATE db SET column1 = :param1 WHERE column2 = :param2"
    OracleCommand.CommandType = CommandType.Text
    OracleCommand.Parameters.Add(New OracleParameter("param1", "1234"))
    OracleCommand.Parameters.Add(New OracleParameter("param2", "Y"))
    OracleCommand.ExecuteNonQuery()
Run Code Online (Sandbox Code Playgroud)

SELECT传递多个参数但不传递更新参数时,我的查询似乎有效

bat*_*wad 30

虽然我看不出你的例子有什么问题,但我想知道你是否被这个老BindByName问题击中了.默认情况下,ODP.NET按照将查询添加到集合的顺序将参数绑定到查询,而不是根据您的名称根据其名称绑定查询.尝试设置BindByNametrue您的OracleCommand对象,看看是否能解决问题.

我有这么多次问题,我使用自己的工厂方法创建命令,自动true为我设置此属性.

这里经典无用的Oracle文档