[英]Why this select query to Oracle(View) doesn't work?
First I tested simple cases: 首先,我测试了一些简单的案例:
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
}
Another: 另一个:
cmd.Parameters.Add(new OracleParameter(":paramRole", OracleDbType.NVarchar2)).Value = userRole;
cmd.CommandText = "SELECT * FROM VIEWUSERDATA WHERE Role = :paramRole";
...
while (reader.Read())
{
//Also works
}
But when join, doesn't work. 但是加入时不起作用。
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
{
}
Data exists, If I do the query in an external query editor(window) works fine. 数据存在,如果我在外部查询编辑器(窗口)中执行查询,则工作正常。
Thanks. 谢谢。
By default, Oracle parameter binding is by position, not by name. 默认情况下,Oracle参数绑定是按位置而不是名称。 Either swap the two cmd.Parameters.Add
calls or set cmd.BindByName = true;
交换两个cmd.Parameters.Add
调用或设置cmd.BindByName = true;
before executing the query. 在执行查询之前。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.