DGKumar Ответов: 1

Как подготовить запрос Oracle с в пункт В С#


Привет Команда,
У меня есть запрос Oracle select с предложением IN, который должен быть передан идентификаторам с параметризацией

string ids ="1,2,3,4,5";
string query="select * from employee where empid in (" + ids + " and ROWNUM <=10)";


Что я уже пробовал:

string ids ="1,2,3,4,5";
string query="select * from employee where empid in (" + ids + " and ROWNUM <=10)";
OracleCommand cmd = new OracleCommand(query, con);
string[] lstIds = ids.Split(",").Select(s => (s).ToArray();
stringBuilder sb = new StringBuilder();
string strParameter = string.empty;
string Param = "Param";
for(int i = 0; i <= lstIds.Length - 1; i++)
{
    strParameter += i == 0 ? Param + i : ",:" + Param + i;
    if (i == 0)
        sb.Append(lstIds[1]);
    else
        sb.Append("," + lstIds[1]);
}

cmd.Parameters.Add(Param, sb.ToString());

OracleDataAdapter da = new OracleDataAdapter(cmd);
DataSet ds= new DataSet();
da.Fill(ds);

Не могли бы вы помочь в этом вопросе как использовать параметризованный запрос с предложением In

1 Ответов

Рейтинг:
0

OriginalGriff

В принципе говоря, вы не можете: Использование разделенных запятыми строк параметров значений в предложениях SQL IN[^] объясняет почему.

Он также объясняет, как это возможно в SqlServer, передавая список идентификаторов в виде строки через параметр запроса, а затем преобразуя его во временную таблицу, на которую затем может ссылаться предложение IN. Но я понятия не имею, как эта функция может работать в Oracle - я не использую ее. Это может сработать. А может, и нет!