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

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

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

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

アプリケーションの手順

  1. SymfowareConnectionオブジェクトでコネクションを接続します。詳細は、“A.2.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.2.8 エラー処理”を参照してください。

try
{
         // SymfowareConnectionオブジェクトの生成
         SymfowareConnection con = new SymfowareConnection("DATA SOURCE=127.0.0.1;PORT=26551;" +
"INITIAL CATALOG=TEST;USER ID=USER01;PASSWORD=PASS01");
         // 1. コネクション接続
         con.Open();
         // 2. SymfowareCommandオブジェクトの生成
         SymfowareCommand com = new SymfowareCommand("CALL SAMPLE1.COUNTPRC(?,?,?,?)", con);
         // 3. SymfowareParameterオブジェクトの生成と設定
         com.Parameters.Add("DAT_P", SymfowareDbType.Date);
         com.Parameters["DAT_P"].Direction = ParameterDirection.Input;
         com.Parameters["DAT_P"].Value = "2007/04/10";
         com.Parameters.Add("OUT_P", SymfowareDbType.Int);
         com.Parameters["OUT_P"].Direction = ParameterDirection.Output;
         com.Parameters.Add("PRCSTATE", SymfowareDbType.Char);
         com.Parameters["PRCSTATE"].Direction = ParameterDirection.Output;
         com.Parameters["PRCSTATE"].Size = 5;
         com.Parameters.Add("PRCMSG",SymfowareDbType.Char);
         com.Parameters["PRCMSG"].Direction = ParameterDirection.Output;
         com.Parameters["PRCMSG"].Size = 255;
         //4. CALL文実行
         com.ExecuteNonQuery();
         // 5. 結果の表示
         string msgstr = "COUNT: " + com.Parameters["OUT_P"].Value + "<br>";
         msgstr += "PRCSTATE: " + com.Parameters["PRCSTATE"].Value + "<br>";
         msgstr += "PRCMSG: " + com.Parameters["PRCMSG"].Value;
         Label1.Text = "PROCEDURE DATA<br>" + msgstr;
         // 6. コネクション切断
         con.Close();
         // 7. オブジェクトの破棄
         con.Dispose();
         com.Dispose();
}
// エラー処理
catch (Exception e1)
{
         // エラー処理ルーチンを記述
}