Oracle绑定变量

时间:2011-01-20 07:26:41

标签: oracle variables binding

我刚开始使用绑定变量,所以我有一个小问题 - 我在.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”这样的简单查询中),但由于某种原因,在这一个中它不起作用。谁能解释我为什么? 非常感谢你!

1 个答案:

答案 0 :(得分:0)

我不确定它是错误的来源但是尝试在OracleParameter构造函数中删除:并使用

_cmd.BindByName = true;

实际上,我认为在您的情况下,以下内容就足够了:

_cmd.Parameters.Add("pLoc", loc);
_cmd.Parameters.Add("pSno", sno);
_cmd.Parameters.Add("pPno ", pno);