ページの先頭行へ戻る
Symfoware Server V12.7.0 アプリケーション開発ガイド(ODBCドライバ編)
FUJITSU Software

B.5.8 ストアドプロシジャの実行

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

本サンプルコードは、ストアドプロシジャを実行し結果をメッセージボックスで表示します。

アプリケーションの手順

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

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

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

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

  5. 出力および入出力パラメタの結果をメッセージボックスで表示します。
    OdbcParameter.Valueプロパティで結果が参照できます。
    このサンプルコードでは、出力パラメタごとに改行し表示します。

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

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

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

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load


        'オブジェクト宣言
        Dim con As System.Data.Odbc.OdbcConnection
        Dim com As System.Data.Odbc.OdbcCommand

        Dim msgstr As String

        'OdbcConnectionオブジェクトの生成
        con = New System.Data.Odbc.OdbcConnection("DSN=DSN01;UID=USER01;PWD=PASS01")

        Try
            '1. コネクション接続
            con.Open()

            '2. OdbcCommandオブジェクトの生成
            com = New System.Data.Odbc.OdbcCommand("CALL SAMPLE1.COUNTPRC(?,?,?,?)", con)

            '3. OdbcParameterオブジェクトの生成と設定
            com.Parameters.Add("DAT_P", System.Data.Odbc.OdbcType.Date)
            com.Parameters("DAT_P").Direction = ParameterDirection.Input
            com.Parameters("DAT_P").Value = "2007 - 4 - 10"
            com.Parameters.Add("OUT_P", System.Data.Odbc.OdbcType.Int)
            com.Parameters("OUT_P").Direction = ParameterDirection.Output
            com.Parameters.Add("PRCSTATE", System.Data.Odbc.OdbcType.Char)
            com.Parameters("PRCSTATE").Direction = ParameterDirection.Output
            com.Parameters("PRCSTATE").Size = 5
            com.Parameters.Add("PRCMSG", System.Data.Odbc.OdbcType.Char)
            com.Parameters("PRCMSG").Direction = ParameterDirection.Output
            com.Parameters("PRCMSG").Size = 255

            '4. CALL文実行
            com.ExecuteNonQuery()

            '5. 結果の表示
            msgstr = "COUNT: " & com.Parameters("OUT_P").Value & ControlChars.Cr
            msgstr &= "PRCSTATE: " & com.Parameters("PRCSTATE").Value & ControlChars.Cr
            msgstr &= "PRCMSG: " & com.Parameters("PRCMSG").Value
            MessageBox.Show(msgstr, "PROCEDURE DATA",
                    MessageBoxButtons.OK, MessageBoxIcon.None)

            '6. コネクション切断
            con.Close()

            '7. オブジェクトの破棄
            con.Dispose()
            com.Dispose()

            'エラー処理
        Catch ex As System.Data.Odbc.OdbcException

            'エラー処理ルーチンを記述
            msgstr = "▲▼  COMMUNICATION OFF LINE  ▲▼"
            MessageBox.Show(msgstr, "!ERROR!", MessageBoxButtons.OK,
                                              MessageBoxIcon.None)

        End Try


    End Sub
End Class