ページの先頭行へ戻る
Symfoware Server V10.0.0 アプリケーション開発ガイド(.NET Data Provider編)

A.3.6 ストアドプロシジャの実行

ストアドプロシジャを実行するサンプルコードについて説明します。

本サンプルコードは、ストアドプロシジャを実行し、結果をWebページ上に表示します。事前にフォームへラベルコントロール(Label1)を追加してください。

アプリケーションの手順

  1. SymfowareConnectionオブジェクトでコネクションを接続します。詳細は、“A.3.1 接続および切断”を参照してください。

  2. SymfowareCommandオブジェクトを生成します。(CommandTextプロパティへCALL文を設定します)

  3. CommandTextプロパティへ設定したパラメタマーカ('?')に対応するSymfowareParameterオブジェクトの生成と設定をします。
    SymfowareCommand.Parameters.AddメソッドでSymfowareParameterオブジェクトを生成します。SQL文中のパラメタマーカ('?')の出現順に生成してください。
    SymfowareParameter.ParameterNameプロパティには、オブジェクト名を任意で設定します。
    SymfowareParameter.Directionプロパティへ入力(Input)、出力(Output)、入出力(InputOutput)を設定します。
    SymfowareParameter.Valueプロパティへパラメタの値を設定します。
    文字列型の出力パラメタおよび入出力パラメタのSymfowareParameter.Sizeプロパティには、最大サイズをバイト数で設定します。

  4. SymfowareCommand.ExecuteNonQueryメソッドでCALL文を実行します。

  5. 出力パラメタの結果をメッセージでWebページ上に表示します。
    SymfowareParameter.Valueプロパティで結果が参照できます。
    このサンプルコードでは、出力パラメタごとに改行し、表示します。

  6. コネクションを切断します。

  7. オブジェクトを破棄します。

エラー処理については、“A.3.8 エラー処理”を参照してください。

Try
    'SymfowareConnectionオブジェクトの生成
    Dim connection1 As New SymfowareConnection("DATA SOURCE=127.0.0.1;PORT=26551;INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01")
    '1.コネクション接続
    connection1.Open()
    '2.SymfowareCommandオブジェクトの生成
    Dim command1 As New SymfowareCommand("CALL SAMPLE1.COUNTPRC(?,?,?,?)", connection1)
    '3.SymfowareParameterオブジェクトの生成と設定
    command1.Parameters.Add("DAT_P", SymfowareDbType.Date)
    command1.Parameters.Item("DAT_P").Direction = ParameterDirection.Input
    command1.Parameters.Item("DAT_P").Value = "2007/04/10"
    command1.Parameters.Add("OUT_P", SymfowareDbType.Int)
    command1.Parameters.Item("OUT_P").Direction = ParameterDirection.Output
    command1.Parameters.Add("PRCSTATE", SymfowareDbType.Char)
    command1.Parameters.Item("PRCSTATE").Direction = ParameterDirection.Output
    command1.Parameters.Item("PRCSTATE").Size = 5
    command1.Parameters.Add("PRCMSG", SymfowareDbType.Char)
    command1.Parameters.Item("PRCMSG").Direction = ParameterDirection.Output
    command1.Parameters.Item("PRCMSG").Size = 255
    '4.CALL文実行
    command1.ExecuteNonQuery()
    '5.結果の表示
    Dim text1 As String = ("COUNT: " & command1.Parameters.Item("OUT_P").Value & "<br>")
    Dim obj1 As Object = text1
    text1 = String.Concat(New Object() {obj1, "PRCSTATE: ", command1.Parameters.Item("PRCSTATE").Value, "<br>"})
    text1 = (text1 & "PRCMSG: " & command1.Parameters.Item("PRCMSG").Value)
    Me.Label1.Text = ("PROCEDURE DATA<br>" & text1)
    '6.コネクション切断
    connection1.Close()
    '7.オブジェクトの破棄
    connection1.Dispose()
    command1.Dispose()
    'エラー処理
Catch exception1 As Exception
    'エラー処理ルーチンを記述
End Try