HIRO's.NET

VB.NET, C#, PowerShell Tipsサイト

 VB.NET, C#, PowerShellを使用しているエンジニアのためのサイト。

 基本的な使用方法から開発で役立つTipsまで幅広く取り扱っています。

HIRO's.NET RSSHIRO's.NET RSS


C# 2005の開発でお困りのことはありませんか?
そんな悩みは当サイトで解決!!

HOME > C# 2005 Tips > その他 Tips メニュー> ストアド操作 OleDB編 Tips メニュー

01.ストアドプロシージャ操作 その1

UPDATE:2007/04/20 

<< 前のTips  次のTips >>

 


C#からOleDBを使用してOracleのストアドプロシージャを呼び出す方法を紹介します。
今回は引数なしのストアドプロシージャをC#から呼び出してみたいと思います。

使用するテーブルは、Oracleを使用している人であればおなじみの、scott/tigerのEMP表です。
■EMP表
CREATE TABLE SCOTT.EMP
(
EMPNO NUMBER(4,0) NOT NULL,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4,0),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2,0),
CONSTRAINT FK_DEPTNO FOREIGN KEY (DEPTNO) REFERENCES SCOTT.DEPT (DEPTNO),
CONSTRAINT PK_EMP PRIMARY KEY (EMPNO)
)
/


下記に引数なしのストアドプロシージャ(PROCEDURE1)を示します。
(中身については特に気にしないでください。説明上、引数なしのプロシージャを準備したかっただけです。)

■ストアドプロシージャ1
CREATE OR REPLACE PROCEDURE SCOTT.PROCEDURE1
IS
BEGIN
    INSERT INTO EMP (EMPNO, ENAME) VALUES ('7777','HIRO');
END;
/

 ストアドプロシージャを呼び出す場合は、OleDbCommandのコマンドタイプにCommandType.StoredProcedureを指定する必要があります。
 OleDbCommandのCommandTypeプロパティには、実行するストアドプロシージャ名を指定します。
 ストアドプロシージャを実行するにはExecuteNonQueryメソッドを実行します。

 
サンプル
using System.Data.OleDb;

private void OleDB_TEST1()
{
    try
    {
        using (OleDbConnection OraConn = 
            new OleDbConnection("Provider=MSDAORA.1.Oracle;user id=scott;" + 
            "password=tiger;data source=aicnet01"))
        {
            using (OleDbCommand Cmd = new OleDbCommand())
            {
                //データベース接続を開く
                OraConn.Open();
                Cmd.Connection = OraConn;
                //コマンドタイプをストアドプロシージャにする
                Cmd.CommandType = CommandType.StoredProcedure;
                //実行するストアドプロシージャを指定
                Cmd.CommandText = "PROCEDURE1";
                //ストアドプロシージャの実行
                Cmd.ExecuteNonQuery();

                MessageBox.Show(
                    "PROCEDURE1 正常終了",
                    "SUCCESS",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Information);
            }
        }
    }
    catch (OleDbException 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 >>