【发布时间】:2018-04-29 01:56:36
【问题描述】:
我需要从 VB.NET 应用程序调用 MySQL (5.7) 数据库中的存储过程。所述过程最后会生成一个SELECT 语句,我需要在我的应用程序中将其检索为DataSet。以前它工作正常,但是我在存储过程中添加了一个输出参数,当我调用它时出现以下错误:
{"PROCEDURE my_database.SP_MY_PROCEDURE 的参数数量不正确;预期为 3,得到 2"}
这是我当前的 VB.NET 代码:
Public Shared Function CallStoredProcedure(ByVal stringParam As String,
ByVal intParam As Integer) As DataSet
Try
Dim ds As New DataSet
Dim params As New List(Of MySqlParameter)
Dim arrayParams() As MySqlParameter
params.Add(New MySqlParameter("@param1", stringParam))
params.Add(New MySqlParameter("@param2", intParam))
arrayParams = params.ToArray()
ds = MySqlHelper.ExecuteDataset(connString,
"CALL SP_MY_PROCEDURE(@param1, @param2);",
arrayParams)
Return ds
Catch objException As Exception
Return Nothing
End Try
End Function
我尝试在字符串中的CALL 语句中添加第三个参数,如下所示:
ds = MySqlHelper.ExecuteDataset(connString,
"CALL SP_MY_PROCEDURE(@param1, @param2, param3);",
arrayParams)
但这只是返回一个不同的错误:
{"例程 gw_my_database.SP_MY_PROCEDURE 的 OUT 或 INOUT 参数 3 不是 BEFORE 触发器中的变量或 NEW 伪变量"}
我怎样才能做到这一点?也许ExecuteDataset不能与输出参数一起使用;至少我还没有找到例子或任何东西。既然如此,有什么好的选择?
【问题讨论】:
-
@djv 这个问题看起来不像我想要完成的。我已经可以从 MySQL Workbench 调用存储过程了;我的问题是我无法使用
MySqlHelper.ExecuteDataset从 VB.NET 应用程序调用它。 -
关键是你需要以某种方式引用 out 参数
标签: mysql vb.net mysql-helper