我刚开始使用绑定变量,所以我有一个小问题 - 我在.NET应用程序中使用Oracle DB和ODP.NET,我正在使用像这样的绑定变量
string sql = "select * from table1 where loc=:pLoc and pno=:pPno and sno=:pSno union all select * from table2 where loc=:pLoc and pno=:pPno and sno=:pSno union all
select * from table3 where loc=:pLoc and pno=:pPno and sno=:pSno";
OracleCommand _cmd = new OracleCommand(sql, DBFacade.DbConnection);
OracleParameter pLoc = new OracleParameter(":pLoc", OracleDbType.Varchar2, 3);
pLoc.Value = loc;
OracleParameter pSno = new OracleParameter(":pSno", OracleDbType.Varchar2, 10);
pLoc.Value = sno;
OracleParameter pPno = new OracleParameter(":pPno", OracleDbType.Varchar2, 18);
pLoc.Value = pno;
_cmd.Parameters.Add(pLoc);
_cmd.Parameters.Add(pSno);
_cmd.Parameters.Add(pPno);
_odaContractPrices.SelectCommand = _cmd;
我已经在其他sql语句中成功使用了绑定变量(在“select * from table1 where column1 =:param1 and column2 =:param2”这样的简单查询中),但由于某种原因,在这一个中它不起作用。谁能解释我为什么? 非常感谢你!
答案 0 :(得分:0)
我不确定它是错误的来源但是尝试在OracleParameter构造函数中删除:并使用
_cmd.BindByName = true;
实际上,我认为在您的情况下,以下内容就足够了:
_cmd.Parameters.Add("pLoc", loc);
_cmd.Parameters.Add("pSno", sno);
_cmd.Parameters.Add("pPno ", pno);