
ODP.NETファーストステップ(1)
ODP.NETでOracle固有の機能を活用する Page 4
日本オラクル
大田 浩
2004/11/27
Oracleデータベースに対してSQLステートメントまたはストアドプロシージャを実行するにはOracleCommandオブジェクトを使用します。OracleCommandオブジェクトの主なメソッドはOTNの「Oracle Data Provider for .NET開発者ガイド」で詳細に説明してありますので、そちらを参照してください。
OracleCommandでは、Parametersプロパティによって名前付きパラメータを利用できます。
cmd.CommandText = _ |
| リスト14 Parametersプロパティによって名前付きパラメータを利用(VB.NET) |
cmd.CommandText = |
| リスト15 Parametersプロパティによって名前付きパラメータを利用(C#) |
ODP.NETでのパラメータの指定方法には以下の2つの方法があります。
- 位置パラメータ(デフォルト)
位置パラメータを使用する場合は、OracleParameterオブジェクトの追加順をSQLで指定されたパラメータ順にする必要があります。SQLで指定されたパラメータ名とOracleParameterで指定するパラメータ名が同一である必要はありません。
- 名前指定パラメータ
名前指定パラメータとは、上記のサンプルソースのように、「cmd.BindByName = True」とOracleCommandオブジェクトのBindByNameプロパティをTrueに設定します。名前指定パラメータの場合はOracleParameterオブジェクトの追加順は引数順にする必要はありませんが、パラメータ名とOracleParameterで指定するパラメータ名が同一である必要があります。
OracleCommandオブジェクトでは、ODP.NET固有の以下の機能をサポートしています。
PL/SQL配列のサポート
ODP.NETは、PL/SQL配列(以前はPL/SQL表と呼ばれていました)のバインドをサポートします。
配列バインド
配列バインド機能により、アプリケーションはOracleParameterクラスを使用して型の配列をバインドできます。配列バインド機能を使用すると、アプリケーションは1回のデータベース・ラウンドトリップで複数の行を表に挿入できます。以下のサンプルコードでは、deptテーブルに対して1回のSQLの実行で3行を一度にInsertしています。
Dim myArrayDeptNo() As Integer = {10, 20, 30} |
| リスト16 配列バインドを使用したサンプルコード(VB.NET) |
int[] myArrayDeptNo = new int[3]{10, 20, 30}; |
| リスト17 配列バインドを使用したサンプルコード(C#) |
REF CURSOR
REF CURSORは、OracleDataReader、DataSetまたはOracleRefCursorとして取得できます。OracleRefCursorオブジェクトとして取得されたREF CURSORは、OracleDataReaderの作成またはREF CURSORからDataSetへの移入に使用できます。REF CURSORにアクセスする際は、必ずOracleDbType.RefCursorとしてバインドします。以下にストアドプロシージャからREF CURSORを取得する方法、および DataGridオブジェクトに情報を表示する方法を説明します。
REF CURSORを使用したパッケージの作成
CREATE OR REPLACE PACKAGE SCOTT.pkg_ref AS |
| リスト18 REF CURSORを使用したパッケージ |
CREATE OR REPLACE PACKAGE BODY SCOTT.pkg_ref AS |
| リスト19 REF CURSORを使用したパッケージ本体 |
ストアドプロシージャからREF CURSORを取得しDataGridオブジェクトに結果を表示するコードは以下のようになります。
Dim cmd As New OracleCommand("pkg_ref.GetEmpDeptData", cnn) |
| リスト20 REF CURSORを取得しDataGridオブジェクトに結果を表示(VB.NET) |
OracleCommand cmd = |
| リスト21 REF CURSORを取得しDataGridオブジェクトに結果を表示(C#) |
上記のサンプルコードでは、REF CURSORからDataSetへデータを格納していますが、OracleRefCursorオブジェクトからOracleDataReaderオブジェクトへ格納することも可能です。
Dim cmd As New OracleCommand("pkg_ref.GetEmpDeptData", cnn) |
| リスト22 REF CURSORを取得しOracleDataReaderへ結果を格納(VB.NET) |
OracleCommand cmd = |
| リスト23 REF CURSORを取得しOracleDataReaderへ結果を格納(C#) |
◇
以上、今回はODP.NETのインストールからOracleへの接続/SQLの発行まで説明しました。次回はASP.NETでODP.NETの機能を最大限に引き出すコーディングテクニックを説明します。どうぞご期待ください。(次回へ続く)
| 4/4 |
| Index | |
| 連載:ODP.NETファーストステップ(1) ODP.NETでOracle固有の機能を活用する |
|
| Page 1 ・ODP.NETを使うメリットとは? ・ODP.NETのインストールと設定 |
|
| Page
2 ・Oracleへの接続 ・tnsnames.oraファイルの設定 |
|
| Page
3 ・OracleConnection固有の機能 |
|
| Page 4 ・SQLステートメントの実行 |
|
| ODP.NETファーストステップ |
TechTargetジャパン
- やはりSELECT文は永遠のテーマです (2012/2/7)
Database Expertフォーラムの2012年1月のアクセスランキングをお届けします。定番の記事を一気に追い抜いてあの記事が…… - SELECT文で取り出したデータを加工して表示する (2012/1/25)
SELECT文で取り出したデータを対象に四則演算する方法など、データを見やすくする方法を解説します - 2012年は私たちが勉強会を盛り上げる! (2012/1/23)
2011年12月、データベース業界初の女子会が発足しました。そこで、女子会を盛り上げていってくれそうな2人にお話を伺いました - 複数の条件を指定してSELECT文を実行する (2012/1/13)
複数の条件を指定してSELECT文を実行する方法と、条件指定に必要な論理演算子、比較演算子の役割を解説します
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -
