带有两个OUT参数和c#的Mysql存储过程
Posted
技术标签:
【中文标题】带有两个OUT参数和c#的Mysql存储过程【英文标题】:Mysql stored procedure with two OUT parameters and c# 【发布时间】:2015-11-20 20:18:44 【问题描述】:我有一个带有两个 OUT 参数的 mysql 存储过程,如下所示。
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
现在在 windows 窗体中,我有两个组合框,其中第一个组合框应与 OUT 变量 UG 绑定,另一个组合框应与另一个 OUT 变量 PG 绑定。
如何使用 c# 实现这一点?
提前致谢。
【问题讨论】:
对于那些感兴趣的人,我展示了一个 MySQL / c# Visual Studio 2015 工作示例HERE。这种情况是 IN 和OUT
参数之一。焦点自然是OUT
。
【参考方案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;
【讨论】:
感谢您的建议。但是 OUT 参数将具有一组值。例如,UG 将具有值 'BCOM,BSC,BED'.. 我希望这些与组合框绑定.. 你能建议..【参考方案2】: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
如果你想要丢弃程序
删除程序 getSurveyWithNameAndAddress
如下调用上述过程
调用 getSurveyWithNameAndAddress(2,9888710807, @name, @surAddress);
选择 @surAddress 作为地址,@name 作为 na
【讨论】:
以上是关于带有两个OUT参数和c#的Mysql存储过程的主要内容,如果未能解决你的问题,请参考以下文章