Muhammd Aamir Ответов: 1

Как я могу создать глобальную функцию, которая будет запускать мою процедуру хранения


Всем Привет...
Я собираюсь создать глобальную функцию в c#, которая будет выполнять мою хранимую процедуру. Когда я когда-нибудь вызову эту функцию, она выполнит мою процедуру.

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

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

Моя функция-это рев
public static void exec_proc(string proc,string param)
   {
       SqlCommand cmd = new SqlCommand(proc,DBConnection());
       cmd.CommandType = CommandType.StoredProcedure;
       cmd.Parameters.Add("@DESCRIPTION", SqlDbType.VarChar,30).Value = param;
       cmd.ExecuteNonQuery();
   }



у меня есть вызов этой функции в моем asp.net страница выглядит следующим образом это работает для меня
дБ.exec_proc("ДБО.CREATE_CATAGORY", txt_Cat_Name.Текст);

F-ES Sitecore

Ваш вопрос не имеет особого смысла. Если вы хотите вызвать другую процедуру, которая не нуждается в параметрах, просто обновите свой код, чтобы сделать это? Непонятно, о чем именно вы спрашиваете.

Muhammd Aamir

Ok Thankx F-ES так же, как и выше, функция примет 2 парама пусть предположим, что я должен вызвать эту функцию, где у меня есть 3 парама, что мне нужно будет сделать ???

F-ES Sitecore

общественная статический недействительным exec_proc(строка прок,строковый параметр, строковый параметр param2)
{
SqlCommand cmd = new SqlCommand(proc, DBConnection());
УМК.CommandType = CommandType.Хранимая процедура;
УМК.Параметры.Добавить ("описание", значения sqldbtype.Тип varchar,30).Значение = парам;
УМК.Параметры.Добавить("@MyOtherParam", Значения Sqldbtype.Тип varchar,30).Значение = параметр param2;
УМК.Метод executenonquery();
}

Muhammd Aamir

F-ES Sitecore Спасибо за то, что поделились со мной своими знаниями, но проблема все та же... Пожалуйста, покажите мне функцию, которая будет делать то же самое без создания новой функции

F-ES Sitecore

общественная статический недействительным exec_proc(строка прок,строковый параметр, строковый параметр param2 = нуль)
{
if (string.IsNullOrWhiteSpace(param2))
{
// param2 не был поставлен
}
ещё
{
// параметр param2 было поставлено
}
}

Muhammd Aamir

Как я могу обновить код вы имеете в виду что мне нужна отдельная функция которая будет выполнять процедуру без парамера

F-ES Sitecore

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

Muhammd Aamir

Хорошо спасибо я постараюсь

ZurdoDev

Одним из способов было бы передать список командных параметров. Я не рекомендую этого делать. Просто напишите функцию для каждого sp.

Muhammd Aamir

Ряндев совершенно прав... я сделал это с помощью списка массивов, и он работает очень эффективно

1 Ответов

Рейтинг:
2

Anamul Hoque

если номер параметра фиксирован, то для динамического вызова можно использовать следующий способ

общественная статический недействительным exec_proc(строка прок,строковый параметр,строку parametetName, значение parametertype тип dbtype,инт pamaterSize)
{
SqlCommand cmd = new SqlCommand(proc, DBConnection());
УМК.CommandType = CommandType.Хранимая процедура;
cmd. Parameters.Add(parametetName, parameterType,pamaterSize).Значение = param;
УМК.Метод executenonquery();
}