Oracle связанные переменные - PullRequest
0 голосов
/ 20 января 2011

Я новичок в работе со связанными переменными, поэтому у меня небольшой вопрос - Я использую Oracle DB и ODP.NET в приложении .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, где column1 =: param1 и column2 =: param2»), но по некоторым причинам в этом он не работает. Может кто-нибудь объяснить мне, почему? Большое спасибо!

1 Ответ

0 голосов
/ 20 января 2011

Я не уверен, что это источник ошибки, но попробуйте удалить: в конструкторе OracleParameter и использовать

_cmd.BindByName = true;

На самом деле, я думаю, что в вашем случае будет достаточно:

_cmd.Parameters.Add("pLoc", loc);
_cmd.Parameters.Add("pSno", sno);
_cmd.Parameters.Add("pPno ", pno);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...