Параметр OracleParameter и IN - PullRequest
       66

Параметр OracleParameter и IN

16 голосов
/ 12 февраля 2009

Есть ли способ добавить параметр в предложение IN с помощью System.Data.OracleClient.

Например:

string query = "SELECT * FROM TableName WHERE UserName IN (:Pram)";
OracleCommand command = new OracleCommand(query, conn);
command.Parameters.Add(":Pram", OracleType.VarChar).Value = "'Ben', 'Sam'";

Ответы [ 12 ]

0 голосов
/ 08 августа 2013

Я сталкивался с этим при поиске того же вопроса, поэтому я хотел бы добавить ответ, который мне показался полезным, так как я не верю, что вышесказанное действительно его достигает:

http://forums.asp.net/t/1195359.aspx/1?Using%20bind%20variable%20with%20an%20IN%20clause

Я также добавлю ответ здесь, если ссылка станет недействительной:

Re: Использование переменной связывания с предложением IN 17 декабря 2007 г., 18:56 | ССЫЛКА

Вы должны добавить каждое значение отдельно. Как то так (пишу на Mac, так что я не смог проверить это)

string sql = "select id, client_id as ClientID, acct_nbr as AcctNbr from acct where acct_nbr in ( %params% )";
        OracleConnection conn = new OracleConnection(DBConnection);
        OracleCommand cmd = new OracleCommand();


        List<string> params=new List<string>();

        foreach(string acctNbr in AcctNbrs.Split(','))
        {
            string paramName=":acctNbr" + params.Count.Tostring();
            params.Add(paramName)
            OracleParameter parms = new OracleParameter(paramName, OracleType.VarChar);
            parms.Value = acctNbr;
            cmd.Parameters.Add(parms);

        }

        cmd.CommandType = CommandType.Text;
        cmd.CommandText = sql.Replace("%params%",params.ToArray().Join(","));
        cmd.Connection = conn;

        OracleDataAdapter da = new OracleDataAdapter(cmd);
        da.Fill(ds);
0 голосов
/ 28 августа 2009

Собственно, я бы тоже попробовал этот код:

string query = "SELECT * FROM TableName WHERE UserName IN (:Pram)";
param = new string[2] {"Ben", "Sam" };
OracleCommand command = new OracleCommand(query, conn);
command.ArrayBindCount = param.Length;
command.Parameters.Add(":Pram", OracleType.VarChar).Value = param;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...