带有两个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存储过程的主要内容,如果未能解决你的问题,请参考以下文章

使用 PDO 调用带有 Out 参数的存储过程

求调用存储过程C#的合法示例:MYSQL

十六.MySQL存储过程

mysql 存储过程 与 循环

如何将 JDBC4PreparedStatement 与期望 OUT 参数的 MySQL 存储过程一起使用?

如何通过 SQL Developer 执行带有游标和表 OUT 参数的存储过程?