IISを使用したWebサービスからのPL/SQLデバッグ.NETユーザー必見! Oracle 10gのお作法(4)(2/3 ページ)

» 2007年07月05日 00時00分 公開
[三谷亮太日本オラクル]

ストアドファンクションの実装

 動作確認が正常に終了したところで、今回使用するストアドファンクションを作成します。作成方法については、第2回の記事をご参照ください。社員番号をキーに給料列を更新し、変更行数を返す単純なファンクションとなります(リスト1)。

FUNCTION "SCOTT"."UPDATESALARY" (
  "ID" IN NUMBER, 
  "SALARY" IN NUMBER) RETURN NUMBER IS
 
BEGIN 
    UPDATE EMP
    SET SAL = SALARY
    WHERE EMPNO = ID;
 
    --戻り値は変更行数
    RETURN SQL%ROWCOUNT;
 
 --すべてのエラーをトラップ
  EXCEPTION  
   WHEN OTHERS THEN
        RETURN 0;
END "UPDATESALARY";
リスト1 給料列を更新するストアドファンクション

Webサービスの実装

 ストアドファンクションを呼び出すWebサービスの実装に入ります。まずはこれまでと同様に、App_CodeフォルダにDataAccessクラスを追加します(図5)。

図5 App_CodeフォルダにDataAccessクラスを追加 図5 App_CodeフォルダにDataAccessクラスを追加

 DataAccessクラスにストアドファンクションを呼び出すUpdateSalaryメソッドを追加します(リスト2)。前回までと同様、コードにはエラー処理やガベージ処理は記述していませんので、環境に応じてカスタマイズしてください。

Public Function UpdateSalary(ByVal empNo As Integer, _
                             ByVal salary As Integer) As Integer
 
    Dim retVal As Integer
    conn = Me.DbConnect
    cmd = conn.CreateCommand
    cmd.CommandType = CommandType.StoredProcedure
    cmd.CommandText = "UPDATESALARY"
 
    '戻り値パラメータを指定
    Dim param1 As DbParameter
    param1 = cmd.CreateParameter
    param1.DbType = DbType.Int32
    param1.Direction = ParameterDirection.ReturnValue
    cmd.Parameters.Add(param1)
 
    Dim param2 As DbParameter
    param2 = cmd.CreateParameter
    param2.Value = empNo
    cmd.Parameters.Add(param2)
 
    Dim param3 As DbParameter
    param3 = cmd.CreateParameter
    param3.Value = salary
    cmd.Parameters.Add(param3)
 
    'ストアドファンクション実行
    cmd.ExecuteNonQuery()
    retVal = param1.Value
 
    Return retVal
 
End Function
リスト2 .NETからストアドファンクションを呼び出す(VB.NET)C#のコードを表示する

 同様に、従業員情報を取得するGetEmpDataメソッドを記述します(リスト3)。

Public Function GetEmpData() As DataSet
    conn = Me.DbConnect
    cmd = conn.CreateCommand
    cmd.Connection = conn
    'EMP表から全件取得
    cmd.CommandText = "SELECT * FROM EMP"
    ds = New DataSet
    da = factory.CreateDataAdapter()
    da.SelectCommand = cmd
    da.Fill(ds)
    Return ds
End Function
リスト3 従業員情報の取得(VB.NET)C#のコードを表示する

 続いて給料列更新の入り口となるWebサービスを作成します。Services.vb(またはcs)ファイルを開き、リスト4のように記述します。

<WebMethod()> _
Public Function UpdateSalary(ByVal empNo As Integer, _
                             ByVal salary As Integer) As Integer
    Dim da As New DataAccess
    Return da.UpdateSalary(empNo, salary)
End Function
リスト4 給料列の更新(Webサービス)(VB.NET)C#のコードを表示する

 同様にEMPテーブルの内容を返すGetEmpData Webサービスを追加します(リスト5)。

<WebMethod()> _
Public Function GetEmpData() As System.Data.DataSet
    Dim da As New DataAccess
    Return da.GetEmpData
End Function
リスト5 従業員情報の取得(Webサービス)(VB.NET)C#のコードを表示する

 これでWebサービスの実装は終了です(図6)。デバッグを実行することで給料列の更新や更新後データの確認が可能です。

図6 Webサービスの実装完了 図6 Webサービスの実装完了

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。