如何将输出参数从 vb.net 传递到 mysql 存储过程?

Posted

技术标签:

【中文标题】如何将输出参数从 vb.net 传递到 mysql 存储过程?【英文标题】:How do you pass an output parameter from vb.net to a mysql stored procedure? 【发布时间】:2012-10-23 03:54:58 【问题描述】:

我在 mysql 5.5 中使用 .net 连接器。当我尝试使用“out”参数调用存储过程时,我在cmd.ExecuteNonQuery() 收到消息OUT or INOUT argument 2 for routine name is not a variable or NEW pseudo-variable in BEFORE trigger

怎么了?

vb代码:

cmd = New MySqlCommand("call testme(@id, @count)", conn)
cmd.Parameters.AddWithValue("@id", id) ' "id" and "count" are integer variables
cmd.Parameters.AddWithValue("@count", count)
cmd.Parameters("@count").Direction = ParameterDirection.Output
cmd.ExecuteNonQuery()

mysql存储过程:

CREATE PROCEDURE testme(in taxid integer, out imageDescCount integer)
BEGIN
set imageDescCount = 23;
End

【问题讨论】:

【参考方案1】:

请试试这个

像在 MySQl 中创建存储过程

DELIMITER $$
DROP PROCEDURE IF EXISTS `tempdb`.`GetCity` $$
CREATE PROCEDURE  `tempdb`.`GetCity` 
(IN cid INT,
 OUT cname VarChar(50)
)

BEGIN

  SET cname = (SELECT CityName FROM `City` WHERE CID = cid);

END $$

DELIMITER ;

和你的 vb.net 代码一样

Dim conn As  New MySqlConnection()
conn.ConnectionString = "server=localhost;user=root;database=tempdb;port=3306;password=******;"
Dim cmd As New MySqlCommand()

conn.Open()
cmd.Connection = conn
cmd.CommandText = "GetCity"
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddWithValue("@cid", "1")
cmd.Parameters("@cid").Direction = ParameterDirection.Input

cmd.Parameters.AddWithValue("@cname", MySqlDbType.String)
cmd.Parameters("@cname").Direction = ParameterDirection.Output
cmd.ExecuteNonQuery()

Console.WriteLine("City Name: " & cmd.Parameters("@cname").Value) //Access Your Output Value

如果您有任何问题,请告诉我...

谢谢

【讨论】:

破解cmd。像这样的部分解决了这个问题,即使没有改变存储过程和整数参数。 (MySqlDbType.String 生成错误,但将其更改为字符串变量可以。)谢谢!

以上是关于如何将输出参数从 vb.net 传递到 mysql 存储过程?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 unsigned short* 从 Visual-C++ DLL 传递到 VB.NET

将命令行参数从 VB 传递到 C# WPF 应用程序

如何将数组变量从 VBA 传递到 vb.net 函数

将数组从 VBA 传递到 VB.NET

将变量从 JS 传递到 VB.net

将字符串从 vb.net 传递到 cmd