您的位置:首页 > 数据库 > Oracle

Entity FrameWork Oracle SQL参数问题

2015-10-09 08:08 253 查看

Entity FrameWork Oracle SQL参数问题

作为一名码了若干代码的程序媛第一次在博客上记录自己遇到的问题,,惭愧啊。。。。。。不过有开始总是好的(纯属自我心理安慰)。

问题描述:

使用EF 4.0 执行Oracle SQL传参数的时,总是提示:ORA-1008:并非所有变量都已绑定;

代码如下:

public int SqlQuery(int? yearly, int? monthly)
{
string sql=@"SELECT COUNT(*) FROM
WHERE (M.YEARLY=:YEARLY or :YEARLY is null)
AND (M.MONTHLY=:MONTHLY or :MONTHLY is null)";
//参数赋值
DbParameter[] param ={
new OracleParameter { ParameterName = "YEARLY", Value = yearly??(object)DBNull.Value },
new OracleParameter { ParameterName = "MONTHLY", Value = monthly??(object)DBNull.Value  }};
int count = this.Context.Database.SqlQuery(typeof(int), sql, param).Cast<int>().FirstOrDefault();
return count;
}


解决办法:

修改参数设置相关代码,将param 改为以下:

DbParameter[] param ={
new OracleParameter { ParameterName = "YEARLY", Value = yearly??(object)DBNull.Value },
new OracleParameter { ParameterName = "YEARLY", Value = yearly??(object)DBNull.Value },
new OracleParameter { ParameterName = "MONTHLY", Value = monthly??(object)DBNull.Value},
new OracleParameter { ParameterName = "MONTHLY", Value = monthly??(object)DBNull.Value  }
};


问题解决。

总结:因为是第一次用EF框架调用Oralce,并使用SQL传参数,忽略了EF SqlQuery方法的设置参数问题;SQL语句中虽然同时用了两个相同的参数,但是SQLQuery在为参数赋值的时候认为他们是四个不同的参数,所以就出现了“并非所有变量都已绑定“异常;(不知道写明白了没)

以上内容纯属个人记录,同时也希望能帮到遇到类似问题的码农们。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: