2015-08-26 3 views
0

У меня есть хранимая процедура MySQL с двумя параметрами OUT, как показано ниже.Mysql хранимая процедура с двумя параметрами OUT и C#

CREATE `GetCourses`(out UG varchar(20),out PG varchar(20)) 
BEGIN 
SELECT course_name into UG FROM test_db.courses where group_id=1; 
select course_name into PG from test_db.courses where group_id=2; 
END 

Теперь в окне формы, у меня есть два ComboBoxes где первое поле со списком следует связать с переменным OUT UG и другие выпадающим следует связать с другим OUT переменной PG.

Как достичь этого с помощью C#?

Заранее спасибо.

+0

Для тех, кто заинтересован, я показал/с # Visual Studio 2015 рабочий пример MySQL [ЗДЕСЬ] (http://stackoverflow.com/a/38706288) , Эта ситуация была одной из параметров IN и 'OUT'. Естественно, основное внимание уделялось «OUT». – Drew

ответ

1

Это будет что-то вроде этого ....

//Basic command and connection initialization 
MySqlConnection conn = new MySqlConnection(ConnectString); 
MySqlCommand cmd = new MySqlCommand("GetCourses", conn); 
cmd.CommandType = System.Data.CommandType.StoredProcedure; 


// Add parameters 
cmd.Parameters.Add(new MySqlParameter("?UG", MySqlDbType.VarChar)); 
cmd.Parameters["?UG"].Direction = ParameterDirection.Output; 

cmd.Parameters.Add(new MySqlParameter("?PG", MySqlDbType.VarChar)); 
cmd.Parameters["?PG"].Direction = ParameterDirection.Output; 

// Open connection and Execute 
conn.Open(); 
cmd.ExecuteNonQuery(); 

// Get values from the output params 
string PG = (string)cmd.Parameters["?PG"].Value; 
string UG = (string)cmd.Parameters["?UG"].Value; 
+0

Спасибо за предложение. Но параметры OUT будут иметь набор значений. Например, UG будет иметь значения «BCOM, BSC, BED». Я хочу, чтобы они были связаны с combobox .. вы могли бы предложить .. –

0
DELIMITER $$ 
CREATE PROCEDURE `surveydb`.`getSurveyWithNameAndAddress` (IN surveyId INT, IN phoneNumber VARCHAR(255), 
    OUT surName VARCHAR(255), OUT surAddress VARCHAR(255)) 
BEGIN 
    SELECT su.`name`,su.`address` INTO surName,surAddress FROM survey AS su 
    WHERE su.`survey_id`=surveyId AND su.`phone`=phoneNumber; 

END 

если вы хотите удалить процедуру

DROP PROCEDURE getSurveyWithNameAndAddress


вызова выше процедуры, как показано ниже

ВЫЗОВА getSurveyWithNameAndAddress (2,9888710807, @name, @surAddress);

ВЫБРАТЬ @surAddress AS адр, @name AS на

Смежные вопросы