VB.NET, C#, PowerShellを使用しているエンジニアのためのサイト。
基本的な使用方法から開発で役立つTipsまで幅広く取り扱っています。
<< 前のTips 次のTips >>
その1~その5までは、OracleのストアドプロシージャをC#から使用する方法を紹介しました。
今回は、OracleのストアドファンクションをVB.NETから呼び出す方法を紹介します。
使用するテーブルは、Oracleを使用している人であればおなじみの、scott/tigerのEMP表です。
ストアドファンクションは下記の通りです。呼び出すと777と言う数値を返すだけのものです。
(例によって深い意味はありません。説明用です。)
■ストアドファンクション
CREATE OR REPLACE FUNCTION SCOTT.FUNCTION1
RETURN NUMBER -- 戻り値のデータ型
IS
BEGIN
return (777);
END;
/
まず、OracleParameterのインスタンスを作成します。
OracleParameterのインスタンス作成時の第1引数には、適当に名前を付けた値を指定します。(今回は戻り値を受け取るという意味合いをこめて"retVal"としています)。第2引数にはストアドファンクションの戻り値であるNumber型に対応する型を指定します。(OracleDbType.Decimal)
次に、ExecuteNonQueryを実行し、作成しておいたOracleParameterのインスタンス(retVal)のValueプロパティを参照することで、ストアドファンクションの戻り値を取得することができます。
private void ODP_FUNCTION1() { try { using (OracleConnection OraConn = new OracleConnection("user id=scott;password=tiger;data source=aicnet01")) { using (OracleCommand Cmd = new OracleCommand()) { //データベース接続を開く OraConn.Open(); Cmd.Connection = OraConn; //コマンドタイプをストアドファンクションにする Cmd.CommandType = CommandType.StoredProcedure; //実行するストアドプロシージャを指定 Cmd.CommandText = "FUNCTION1"; //ストアドファンクションの戻り値パラメータ作成 OracleParameter retVal = new OracleParameter("retVal", OracleDbType.Decimal); retVal.Direction = ParameterDirection.ReturnValue; Cmd.Parameters.Add(retVal); //ストアドファンクションの実行 Cmd.ExecuteNonQuery(); MessageBox.Show( "FUNCTION1 正常終了 戻り値=" + retVal.Value.ToString(), "SUCCESS", MessageBoxButtons.OK, MessageBoxIcon.Information); } } } catch (OracleException OraEx) { // Oracle例外発生時 MessageBox.Show(OraEx.Message, "ORACLE ERROR", MessageBoxButtons.OK, MessageBoxIcon.Stop); } catch (Exception ex) { // 一般例外発生時 MessageBox.Show(ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Stop); } }
<< 前のTips 次のTips >>