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

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

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

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

アプリケーションの手順

  1. コネクションを接続します。詳細は、“C.3.1 接続および切断”を参照してください。

  2. Commandオブジェクトを生成します。
    Command.ActiveConnectionプロパティに手順1で生成したConnectionオブジェクトを設定します。
    Command.CommandTextプロパティにストアドプロシジャ名を設定します。
    Command.CommandTypeプロパティにadCmdStoredProcを設定します。

  3. Parameterオブジェクトの生成と設定をします。
    Parameter.Nameプロパティには、オブジェクト名を任意で設定します。
    Parameter.Typeプロパティには、データ型を設定します。
    Parameter.Directionプロパティには、入力パラメタ(adParamInput)、出力パラメタ(adParamOutput)のいずれかであることを設定します。
    入力パラメタのParameter.Valueプロパティには値を設定します。
    文字列型のParameter.Sizeプロパティには、データの最大サイズをバイト数で設定します。

  4. ParametersコレクションにParameterオブジェクトを追加します。SQL文中のパラメタマーカ('?')の出現順に追加してください。

  5. Command.Executeメソッドでストアドプロシジャを実行します。
    ストアドプロシジャの結果を、出力パラメタのParameter.Valueプロパティで結果を取得します。

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

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

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

'オブジェクト宣言
Dim Con As Connection
Dim Com As Command
Dim Par1 As Parameter, Par2 As Parameter, Par3 As Parameter, Par4 As Parameter

Dim msgstr As String

'Connectionオブジェクトの生成と設定
Set Con = New Connection
Con.ConnectionString = "DSN=DSN01;UID=USER01;PWD=PASS01;"

On Error GoTo ErrorProc

'1. コネクション接続
Con.Open

'2. Commandオブジェクトの生成と設定
Set Com = New Command
Com.ActiveConnection = Con
Com.CommandText = "COUNTPRC"
Com.CommandType = adCmdStoredProc

'3. Parameteオブジェクトの生成と設定
Set Par1 = Com.CreateParameter("DAT_P", adDate, adParamInput, , "2007/04/10")
Set Par2 = Com.CreateParameter("OUT_P", adInteger, adParamOutput)
Set Par3 = Com.CreateParameter("PRCSTATE", adChar, adParamOutput, 5)
Set Par4 = Com.CreateParameter("PRCMSG", adChar, adParamOutput, 255)

'4. ParametersコレクションにParameterオブジェクトを追加
Com.Parameters.Append Par1
Com.Parameters.Append Par2
Com.Parameters.Append Par3
Com.Parameters.Append Par4

'5. ストアドプロシジャの実行
Com.Execute

'メッセージボックスで結果を表示
msgstr = "COUNT: " & Com.Parameters("OUT_P").Value & Chr(10)
msgstr = msgstr & "PRCSTATE: " & Com.Parameters("PRCSTATE").Value & Chr(10)
msgstr = msgstr & "PRCMSG: " & Com.Parameters("PRCMSG").Value
MsgBox msgstr, vbOKOnly, "PROCEDURE DATA"

'6. コネクション切断
Con.Close

'7. オブジェクトの破棄
Set Par1 = Nothing
Set Par2 = Nothing
Set Par3 = Nothing
Set Par4 = Nothing
Set Com = Nothing
Set Con = Nothing

Exit Sub

'エラー処理
ErrorProc:

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