ページの先頭行へ戻る
Symfoware Server V10.0.0/V10.0.1 アプリケーション開発ガイド(ODBCドライバ編)

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

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

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

アプリケーションの手順

  1. OdbcConnectionオブジェクトでコネクションを接続します。詳細は、“C.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. オブジェクトを破棄します。

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

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

Dim msgstr As String

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

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

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

    '3. OdbcParameterオブジェクトの生成と設定
    com.Parameters.Add("DAT_P", Microsoft.Data.Odbc.OdbcType.Date)
    com.Parameters("DAT_P").Direction = ParameterDirection.Input
    com.Parameters("DAT_P").Value = "2007/04/10"
    com.Parameters.Add("OUT_P", Microsoft.Data.Odbc.OdbcType.Int)
    com.Parameters("OUT_P").Direction = ParameterDirection.Output
    com.Parameters.Add("PRCSTATE", Microsoft.Data.Odbc.OdbcType.Char)
    com.Parameters("PRCSTATE").Direction = ParameterDirection.Output
    com.Parameters("PRCSTATE").Size = 5
    com.Parameters.Add("PRCMSG", Microsoft.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 Microsoft.Data.Odbc.OdbcException

    'エラー処理ルーチンを記述

End Try