アプリ版:「スタンプのみでお礼する」機能のリリースについて

VB.NETとSQL Serverでストアドプロシージャーを使用しています。
OUTPUTパラメータを2つ使用したいのですが、VB.NET側での受け取り方法がよくわかりません。
ご存知の方がいらっしゃいましたら、よろしくお願いします。

A 回答 (1件)

取得系ストアドの場合のサンプルです。



更新系ストアドの場合は
http://www.microsoft.com/japan/msdn/columns/vbne …
を参考にしてください。



--サンプルストアド
CREATE PROCEDURE ストアド
--ALTER PROCEDURE ストアド
@パラム1_VAR_I VARCHAR(12),
@パラム2_INT_I INT,
@パラム3_VAR_O VARCHAR(26) OUTPUT,
@パラム4_INT_IO INT OUTPUT
AS
--パラメータ3を'aa'
SET @パラム3_VAR_O = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
--パラメータ4を100倍
SET @パラム4_INT_IO = @パラム4_INT_IO * 100

--パラメータ1を返す
SELECT @パラム1_VAR_I AS パラメータ1

--パラメータ2の10倍をステータスとして返す
RETURN @パラム2_INT_I * 10



'標準ジュール[Module1.vb]
Imports System.Data.SqlClient
Module Module1
  Sub Main()
    Const DEF_ストアド名 As String = "ストアド"

    'ユーザ名/パスワード/DB設定を修正してください
    Dim l_sqlコネクション As SqlConnection = New SqlConnection("server=localhost;uid=ユーザ;pwd=パスワード;database=master")
    Dim l_sqlコマンド As SqlCommand = New SqlCommand(DEF_ストアド名, l_sqlコネクション)

    With l_sqlコマンド
      'CommandTextの種別 = ストアド
      .CommandType = CommandType.StoredProcedure

      'パラメータ追加:戻り値
      .Parameters.Add(パラメータ作成("@戻り値", SqlDbType.Int, 4, ParameterDirection.ReturnValue))

      'パラメータ追加:引数(I/I/O/IO)
      .Parameters.Add(パラメータ作成("@パラム1_VAR_I", SqlDbType.VarChar, 12, ParameterDirection.Input, "abcde"))
      .Parameters.Add(パラメータ作成("@パラム2_INT_I", SqlDbType.Int, 4, ParameterDirection.Input, 2))
      .Parameters.Add(パラメータ作成("@パラム3_VAR_O", SqlDbType.VarChar, 26, ParameterDirection.Output))
      .Parameters.Add(パラメータ作成("@パラム4_INT_IO", SqlDbType.Int, 4, ParameterDirection.InputOutput, 3))
    End With

    'ストアド実行
    Dim l_sqlアダプタ As New SqlDataAdapter(l_sqlコマンド)
    Dim l_dstデータセット As New DataSet()
    l_sqlアダプタ.Fill(l_dstデータセット)


    '実行結果を出力
    Dim i As Integer
    Dim l_str結果 As String = ""
    With l_sqlコマンド.Parameters
      For i = 0 To .Count - 1
        l_str結果 &= i & vbTab & .Item(i).ParameterName.ToString & vbTab & .Item(i).Value.ToString & vbCrLf
      Next
    End With
    Call MsgBox(l_str結果, MsgBoxStyle.Information, "結果出力")

  End Sub

  'パラメータ作成関数
  Private Function パラメータ作成( _
          ByVal p_strパラメータ名 As String _
          , ByVal p_dtpDBタイプ As System.Data.SqlDbType _
          , ByVal p_intサイズ As Integer _
          , ByVal p_pdrパラメータ種別 As System.Data.ParameterDirection _
          , Optional ByVal p_obj初期値 As Object = Nothing _
      ) As SqlParameter

    Dim l_sqlパラメータ As New SqlParameter(p_strパラメータ名, p_dtpDBタイプ, p_intサイズ)
    l_sqlパラメータ.Direction = p_pdrパラメータ種別
    l_sqlパラメータ.Value = IIf((p_obj初期値 Is Nothing), vbNull.Variant, p_obj初期値)
    Return l_sqlパラメータ
  End Function
End Module
    • good
    • 0
この回答へのお礼

Item(i).Valueで値が取れるんですね。勉強になりました。
ソースも参考にさせていただきます。
ありがとうございました。

お礼日時:2005/09/15 10:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A