HIRO's.NET Blog

PowerShellが好き

目次

Blog 利用状況

ニュース

あわせて読みたい

書庫

日記カテゴリ

リンク

VB.NETからOracleストアドプロシージャを呼び出す その1

今回から何回かに分けて、VB.NETからOracleのストアドプロシージャを呼び出す方法を紹介していきたいと思います。(ここ違うんじゃないの?という箇所ありましたらつっこみお願いします。)

 

開発言語:VB.NET 2005

Oracle Server: 8.1.6以降推奨(というか実験環境がこれでした)

使用するテーブルは、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)
)
/

 

今回は、引数なしのストアドプロシージャをVB.NETから呼び出してみたいと思います。

下記に引数なしのストアドプロシージャ(PROCEDURE1)を示します。

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

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

以下、ODP.NET, MicorosoftのOracleClient, OleDB の3種類を使用してPROCEDURE1を呼び出す例です。

使用するクラスが違うだけで、使用方法はほぼ一緒です。接続文字列が異なるくらいです。

■ODP.NETサンプル
Imports Oracle.DataAccess.Client

Private Sub ODP_TEST1()
    Try
        Using OraConn As New OracleConnection("user id=scott;password=tiger;data source=YourServer")
            Using Cmd As New OracleCommand
                'データベース接続を開く
                OraConn.Open()
                Cmd.Connection = OraConn
                'コマンドタイプをストアドプロシージャにする
                Cmd.CommandType = CommandType.StoredProcedure
                '実行するストアドプロシージャを指定
                Cmd.CommandText = "PROCEDURE1"
                'ストアドプロシージャの実行
                Cmd.ExecuteNonQuery()

                MessageBox.Show("PROCEDURE1 正常終了", "SUCCESS", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Using
        End Using

    Catch OraEx As OracleException
        'Oracle例外発生時
        MessageBox.Show(OraEx.Message, "ORACLE ERROR", MessageBoxButtons.OK, MessageBoxIcon.Stop)

    Catch ex As Exception
        '一般例外発生時
        MessageBox.Show(ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Stop)
    End Try
End Sub

■OracleClientサンプル
Imports System.Data.OracleClient

Private Sub OracleClient_TEST1()
    Try
        Using OraConn As New OracleConnection("user id=scott;password=tiger;data source=YourServer")
            Using Cmd As New OracleCommand
                'データベース接続を開く
                OraConn.Open()
                Cmd.Connection = OraConn
                'コマンドタイプをストアドプロシージャにする
                Cmd.CommandType = CommandType.StoredProcedure
                '実行するストアドプロシージャを指定
                Cmd.CommandText = "PROCEDURE1"
                'ストアドプロシージャの実行
                Cmd.ExecuteNonQuery()

                MessageBox.Show("PROCEDURE1 正常終了", "SUCCESS", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Using
        End Using

    Catch OraEx As OracleException
        'Oracle例外発生時
        MessageBox.Show(OraEx.Message, "ORACLE ERROR", MessageBoxButtons.OK, MessageBoxIcon.Stop)

    Catch ex As Exception
        '一般例外発生時
        MessageBox.Show(ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Stop)
    End Try
End Sub

■OleDBサンプル
Imports System.Data.OleDb

Private Sub OleDB_TEST1()
    Try
        Using OraConn As New OleDbConnection("Provider=MSDAORA.1.Oracle;user id=scott;password=tiger;data source=YourServer")
            Using Cmd As New OleDbCommand
                'データベース接続を開く
                OraConn.Open()
                Cmd.Connection = OraConn
                'コマンドタイプをストアドプロシージャにする
                Cmd.CommandType = CommandType.StoredProcedure
                '実行するストアドプロシージャを指定
                Cmd.CommandText = "PROCEDURE1"
                'ストアドプロシージャの実行
                Cmd.ExecuteNonQuery()

                MessageBox.Show("PROCEDURE1 正常終了", "SUCCESS", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Using
        End Using

    Catch OleEx As OleDbException
        'OleDB例外発生時
        MessageBox.Show(OleEx.Message, "OleDB ERROR", MessageBoxButtons.OK, MessageBoxIcon.Stop)

    Catch ex As Exception
        '一般例外発生時
        MessageBox.Show(ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Stop)
    End Try
End Sub


投稿日時 : 2007年4月17日 23:58

コメントを追加

No comments posted yet.
タイトル  
名前  
URL
コメント