VB2005 + SQL ストアドでのパラメーター受け渡し

ストアドでのパラメーター受け渡し

Dim cn As SqlClient.SqlConnection

Sub a()

    Dim cmd As New SqlClient.SqlCommand
   
Try

        Dim strSQL As String = “stTest”
        cmd.Connection = cn
        cmd.CommandText = strSQL
        cmd.CommandType = CommandType.StoredProcedure
        cmd.Parameters.Clear()
        ‘Return Value
        cmd.Parameters.Add(“@Ret”, SqlDbType.Int).Direction = ParameterDirection.ReturnValue
        ‘入力パラメーター Input Parameters
        cmd.Parameters.Add(“@ID”, SqlDbType.Int).Value = 1
        cmd.Parameters.Add(“@a1”, SqlDbType.NVarChar).Value = “A”
        cmd.Parameters.Add(“@a2”, SqlDbType.Decimal).Value = 1.52D
        ‘出力パラメーター Output Parameters
        cmd.Parameters.Add(“@b1”, SqlDbType.Int).Direction = ParameterDirection.Output
        ‘Decimal型の出力パラメーターはPrecision(最大桁数)とScale(小数部桁数)の指定が必要.欄外の※も参照.
        cmd.Parameters.Add(“@b2”, SqlDbType.Decimal).Direction = ParameterDirection.Output
        cmd.Parameters(“@b2”).Precision = 4
        cmd.Parameters(“@b2”).Scale = 2

        Dim res As Integer = cmd.ExecuteNonQuery() ‘ストアド実行

        If CInt(cmd.Parameters(“@Ret”).Value) = 1 Then
            If Not IsDBNull(cmd.Parameters(“@b1”).Value) Then
                Dim b1 As Integer = CInt(cmd.Parameters(“@b1”).Value)
                ‘コード
            End If
        End If

    Finally
        cmd.Dispose()
    End Try
End Sub


Updated:
2010-10-23 Decimal型の例を追加.
※ Decimal型のPrecision(最大桁数)とScale(小数部桁数)の指定は入力パラメーターでは不要だが出力パラメーターでは必要.
ややこしいことに,Excel VBAでは,入力パラメーター・出力パラメーターどちらにも必要.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です