0

ストアド プロシージャで出力変数を使用して、データベースから 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

ここで、lbl.Text に "800" があり、別のストアド プロシージャ (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

それはうまくいきません。

4

1 に答える 1

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 への単一の呼び出しに結合する必要があります。

于 2013-06-07T13:40:05.817 に答える