Ответы с форумов MSDN

SqlParameter

Date: 24.12.2016 9:13:29

Какое исключение генерируется?

К чему тут Variant? Просто SqlParameter myPar = new SqlParameter("@List_par", List_par); не работает?

Message 1027

Date: 26.12.2016 5:34:08

проще наверно будет сделать вот так:

StringBuilder sb = new StringBuilder();
SqlParameter myPar;
for (int i=0; i< List_par.Count; i++)
{
    sb.AppendFormat("@p{0},",i);
	myPar=new SqlParameter("p"+i.ToString(), List_par[i]);
    query.Parameters.Add(myPar);
}

query.CommandText = string.Format("SELECT f.id, udf.FOR_LIST(f.id,[{0}]) AS funk FROM Items f", sb.ToString().TrimEnd(','));





Message 1026

Date: 26.12.2016 6:39:31

да, вместо List_par.Count - List_par.Length

вместо CommandText - QueryText

но для начала попробуйте так прописать статически запрос (с одинарными кавычками):

query.QueryText="SELECT f.id, udf.FOR_LIST(f.id, ['auto_1','auto_2']) AS funk FROM Items f";

Message 1025

Date: 26.12.2016 7:47:04

если так работает, то и мой предыдущий пример должен работать

можно еще так попробовать (подключить Newtonsoft.Json.Linq):

string[] arr={ "auto_1", "auto_2" };
JArray List_par=new JArray(arr);
SqlParameter myPar = new SqlParameter("@List_par", List_par);
query.Parameters.Add(myPar);

"через формирование строки запроса в следующем виде...Наверное придется так и делать"

Будьте внимательны со сборкой запросов напрямую. Если содержимое list_par будет приходить в программу из внешнего источника, возможна SQL-инъекция. 




Автор: VadimTagil

Главная страница - Список тем - Репозиторий на GitHub