「Oracle」ストアドプロシージャのカーソルを使ってみる
以下のエントリーで簡単なストアドプロシージャを作成してみましたが、今回はカーソルを使うストアドプロシージャを作成してみたのでメモしておきます。
・「Oracle」ストアドプロシージャを作成してみる - プログラム日記
http://a4dosanddos.hatenablog.com/entry/2015/05/08/010524
1. テスト用テーブルの作成 ( 上記のエントリーと同様のテーブルを使用してます )
カラムが id と name だけの簡単なテーブルにしました。
create table t1 (id number(10), name varchar(10), primary key (id));
データもつっこんでおきます。
insert into t1 values (1, 'aaa'); insert into t1 values (2, 'bbb'); insert into t1 values (3, 'ccc'); insert into t1 values (4, 'aaa'); commit;
2.ストアドプロシージャの作成
上記のテーブル t1 を条件 name で select して、取得結果を出力パラメータに格納するストアドプロシージャになります。
■ 仕様部
create or replace package bbb as type cursortype is ref cursor; procedure select_t1_cursor (aa in varchar, bb out cursortype); end bbb; /
■ 本体
create or replace package body bbb as procedure select_t1_cursor (aa in varchar, bb out cursortype) is begin begin open bb for select * from t1 where name = aa; end; end; end bbb; /
実行は以下の感じで。
set serveroutput on variable bb refcursor execute bbb.select_t1_cursor('aaa', :bb)
実行結果
print :bb ID NAME ---------- ------------------------------ 1 aaa 4 aaa
非常に簡単な内容ですが、ひとまずはこれぐらいでいいかな。
[ 環境情報 ]
CentOS 5.5
Oracle Database 11g Release 2 ( 11.2.0.1.0 )