Хранимая процедура - C#
Формулировка задачи:
доброго времени суток!
Не могли бы подсказать, как правильно вызывать хранимую процедуру в сишарпе? Сама процедура написана на sql. процедура принимает 3 параметра типа int, и 1 выходной параметр типа varchar. В сишарпе есть 3 текст бокса под эти 3 параметра и 1 текстбокс под выходной параметр. Проблема в том что никак не получается правильно вызвать.
В CommandType пробовал писать cmd.CommandType = CommandType.StoredProcedure; , но тоже не получалось. Все время пишет что не удалось найти процедуру принемающие параметры и перечисляет мои параметры. Или просто не удалось выполнить и пишет тело запроса. Из скл манеджера процедура вызывается нормально. В скл менеджере вызывается вот так.
Пожалуйста подскажите где ошибка. Заранее спасибо.
private void button1_Click(object sender, EventArgs e) { cmd.Connection = con; cmd.CommandType = CommandType.Text; cmd.CommandText = "exec p_one @par1=p_number_spec, @par2=numer_zakaz ,@par3=vip_li_zakaz, @par4 = msg"; cmd.Parameters.Clear(); SqlParameter p1 = cmd.Parameters.Add("@par1", SqlDbType.Int); SqlParameter p2 = cmd.Parameters.Add("@par2", SqlDbType.Int); SqlParameter p3 = cmd.Parameters.Add("@par3", SqlDbType.Int); SqlParameter p4 = cmd.Parameters.Add("@par4", SqlDbType.VarChar,100); p1.Direction = ParameterDirection.Input; p1.Value = textBox_n_spec.Text; p2.Direction = ParameterDirection.Input; p2.Value = textBox_n_zakaz.Text; p3.Direction = ParameterDirection.Input; p3.Value = textBox_vip.Text; p4.Direction = ParameterDirection.Output; p4.Value = textBox_msg; con.Open(); try { cmd.ExecuteNonQuery(); MessageBox.Show("success!"); } catch (Exception ex) { MessageBox.Show(ex.Source + ex.Message + ex.HelpLink); } con.Close(); }
DECLARE @usr_mesg VARCHAR(100) EXEC p_one 7,5,1 , @mesg = @usr_mesg
Решение задачи: «Хранимая процедура»
textual
Листинг программы
textBox_msg.Text=p4.Value.ToString();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д