mysql - VB.NET存储过程中的dbnull OUT参数

标签 mysql asp.net vb.net stored-procedures error-handling

我的问题是存储过程没有在VB.NET端给我带来结果。当我在Mysql数据库中测试存储过程时,它可以完美运行。因此,我认为这是VB.NET方面。我尝试了很多在Web上看到的方法,它们与我在下面放置的代码非常相似。告诉我我做错了吗?我如何评估连接到DB时发生的情况,而我在OUT PARAMETER中没有收到任何答案。

Try
    conexion.Open()
    command.Connection = conexion
    command.CommandText = "DUA_ENCABEZADO_TRAERPAISORIGEN"
    command.CommandType = CommandType.StoredProcedure

    command.Parameters.AddWithValue("@COD_DUA", CInt(TxtCodDUA.Text))
    command.Parameters("@COD_DUA").Direction = ParameterDirection.Input               
    command.Parameters.Add("@CODIGO_PAIS", MySqlDbType.VarChar, 2).Direction = ParameterDirection.Output
    command.ExecuteNonQuery()


    XML_PaisOrigen = command.Parameters(1).Value.ToString   

    conexion.Close()

Catch ex As Exception
    MsgBox(ex.Message & vbCrLf & "Error al ejecutar << " & ex.Message,MsgBoxStyle.Critical, "Error Popup")

End Try

'XML_PaisOrigen是一个字符串

这是我的Mysql SP:
CREATE DEFINER=`root`@`localhost` PROCEDURE `DUA_ENCABEZADO_TRAERPAISORIGEN`(
     IN COD_DUA INT,
     OUT CODIGO_PAIS VARCHAR(2))

这是我对SP的调用,可以在MYSQL端使用:
SET @COD_DUA =1;
CALL DUA_ENCABEZADO_TRAERPAISORIGEN(@COD_DUA,@CODIGO_PAIS);
SELECT @CODIGO_PAIS;

最佳答案

我通常要做的是将参数放入变量中,以便于使用。

    Try
        conexion.Open()
        command.Connection = conexion
        command.CommandText = "DUA_ENCABEZADO_TRAERPAISORIGEN"
        command.CommandType = CommandType.StoredProcedure

        dim p1 as sqlParameter = command.Parameters.AddWithValue("@COD_DUA", CInt(TxtCodDUA.Text))
        p1.Direction = ParameterDirection.Input               
        dim p2 as sqlParameter = command.Parameters.Add("@CODIGO_PAIS", MySqlDbType.VarChar, 2)
        p2.Direction = ParameterDirection.Output
        command.ExecuteNonQuery()


       XML_PaisOrigen = p.Value.ToString   

       conexion.Close()

    Catch ex As Exception
        MsgBox(ex.Message & vbCrLf & "Error al ejecutar << " & ex.Message,MsgBoxStyle.Critical, "Error Popup")

    End Try

关于mysql - VB.NET存储过程中的dbnull OUT参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25413098/

相关文章:

php - 在 PHP 中使用 INNER JOIN 更新第一列的最小值 LIMIT 1

mysql - 替换mysql查询中的文本

javascript - 单击编辑按钮时如何使用 jquery 从循环表的每一行传递 id?

.net - 确定鼠标何时停止移动

php - 交换 3 行的行值

c# - 如何解决错误 "The foreign key name was not found on the dependent type "

c# - ASP.NET 缓存策略

asp.net - ASP :DropDownList - invalid postback or callback argument when adding options via JavaScript/jQuery

asp.net - 对象数据源

C# 到 VB : Class. 事件 += (sender, args) => FunctionName(params)