在vb.net中输出变量值

时间:2013-06-07 13:35:39

标签: vb.net tsql

我使用存储过程中的输出变量将值从数据库传递到VB.NET。

Public Sub VALUEONE()
        Dim conn As New SqlConnection("Data Source=XXX\SQLEXPRESS;Initial Catalog=DB;Integrated Security=TRUE")
        Dim cmd As SqlCommand = New SqlCommand("dbo.test", conn)
        cmd.CommandType = CommandType.StoredProcedure
        cmd.Parameters.Add("@test", SqlDbType.Decimal)
        cmd.Parameters("@test").Direction = ParameterDirection.Output
            conn.Open()
            cmd.ExecuteNonQuery()
            lbl.Text = cmd.Parameters("@test").Value.ToString
            conn.Close()
End Sub

现在让我说我有一个" 800"在lbl.Text中,我对另一个存储过程(dbo.test2)具有完全相同的代码,并且我在lbl.text2值" 120"中有outputparameter @ test2。我现在要总结" 800"和" 120"并在lbltest3中可视化,但我不知道该怎么做。我已经尝试过类似的东西:

dim a as decimal
dim b as decimal
a = cmd.Parameters("@test").Value
b = cmd.Parameters("@test2").Value
lbl3 = (a+b).tostring
但它不起作用。

1 个答案:

答案 0 :(得分:0)

Public Sub VALUETWO()
    Using conn As New SqlConnection("Data Source=XXX\SQLEXPRESS;Initial Catalog=DB;Integrated Security=TRUE"), _
              cmd As SqlCommand = New SqlCommand("dbo.test", conn)

        cmd.CommandType = CommandType.StoredProcedure
        cmd.Parameters.Add("@test", SqlDbType.Decimal)
        cmd.Parameters("@test").Direction = ParameterDirection.Output

        conn.Open()

        cmd.ExecuteNonQuery()
        Decimal a = cmd.Parameters("@test").Value

        cmd.CommandText = "dbo.test2"
        cmd.Parameters.Add("@test2", SqlDbType.Decimal)
        cmd.Parameters("@test2").Direction = ParameterDirection.Output

        cmd.ExecuteNonQuery()
        Decimal b = cmd.Parameters("@test").Value

        lbl3.Text = (a + b).ToString()
     End Using
End Sub

但是,您可能希望将这些存储过程组合成对db的单个调用。