使用ExecuteDataset使用输出参数调用存储过程

时间:2017-11-15 17:55:36

标签: mysql vb.net mysql-helper

我需要从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)

但这只会返回一个不同的错误:

  

{" OUT或INOUT参数3用于例程gw_my_database.SP_MY_PROCEDURE   在BEFORE触发器中不是变量或NEW伪变量"}

如何实现这一目标?也许ExecuteDataset无法与输出参数一起使用;至少我还没有找到例子或任何东西。情况就是这样,什么是一个好的选择?

1 个答案:

答案 0 :(得分:0)

您绝对可以将ExecuteDataset()与输出参数一起使用。您需要确保将所有必需参数(包括输出参数)添加到参数列表中。您需要在适用的情况下确认类型和大小,并正确设置每个参数的方向。执行ExecuteDataset()之后,您可以从我们的输出参数中检索值。

我看不到在代码中添加第三个参数(或者您可能没有显示该部分),无法设置方向/类型/大小。