为什么这个对Oracle(视图)的选择查询没有';不起作用

本文关键字:查询 不起作用 选择 Oracle 视图 为什么 | 更新日期: 2023-09-27 18:29:19

我首先测试了简单的案例:

cmd.Parameters.Add(new OracleParameter(":paramCode", OracleDbType.NVarchar2)).Value = userCode;
cmd.CommandText = "SELECT * FROM VIEWUSERDATA WHERE  Codigo = :paramCode";
cmd.CommandType = System.Data.CommandType.Text;
OracleDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
    //Works, retrieve data
}

另一个:

cmd.Parameters.Add(new OracleParameter(":paramRole", OracleDbType.NVarchar2)).Value = userRole;
cmd.CommandText = "SELECT * FROM VIEWUSERDATA WHERE  Role = :paramRole";
...
while (reader.Read())
{
    //Also works
}

但当加入时,不起作用。

cmd.Parameters.Add(new OracleParameter(":paramCode", OracleDbType.NVarchar2)).Value = userCode;
cmd.Parameters.Add(new OracleParameter(":paramRole", OracleDbType.NVarchar2)).Value = userRole;
cmd.CommandText = "SELECT * FROM VIEWUSERDATA WHERE Role = :paramRole AND Code = :paramCode";
...
while (reader.Read())//don't retrieve anything
{
}

数据存在,如果我在外部查询编辑器(窗口)中进行查询,效果良好。

谢谢。

为什么这个对Oracle(视图)的选择查询没有';不起作用

默认情况下,Oracle参数绑定是按位置绑定,而不是按名称绑定。在执行查询之前,交换两个cmd.Parameters.Add调用或设置cmd.BindByName = true;