我的问题是存储过程没有在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/