DB/Oracle/PLSQL/データベース連携
目次†
PL/SQL から Oracle Database を操作する。つまりは中に SQL 文を埋め込むお話。
SELECT†
テーブルからのデータの検索。そして検索結果を変数に放り込む。
以下のサンプルのように記述する場合、SELECT 文の結果は、必ず 1 行でなければならないので注意。複数件のデータを取得して扱う場合は、カーソルの使用が必須。
- SELECT
declare v_hoge foo.hoge%type; v_fuga foo.fuga%type; v_piyo foo.piyo%type; v_sum number; begin -- SELECT した結果の各列をそれぞれ変数に格納する -- 返される行が 1 行になるように絞り込みが必須 select hoge, fuga, piyo into v_hoge, v_fuga, v_piyo from foo where bar = 100; -- グループ関数の結果は 1 行なのでいろいろ活用できる select sum(hoge) into v_sum from foo; end; /
変数のネーミング規則に注意すること。テーブルの列名と同じ変数を宣言してしまうと select 文の where 句であいまいな状態になってエラーが出る。
- ダメな例
declare hoge foo.hoge%type; fuga foo.fuga%type := 100; begin select hoge into hoge from foo -- fuga が列名なのか変数なのかわからないのでエラー where fuga = fuga; end; /
UPDATE、INSERT、DELETE、MERGE†
これはもうそのまま書くだけ。いまさら書くまでもないので割愛。
COMMIT、ROLLBACK†
これもそのまま書くだけ。これも割愛。
根本的な話として、そもそも COMMIT するのを忘れるとか、そういうアレなことをしないようにしようね、と。
ROLLBACK は例外処理に入れることが多いらしい。
Last-modified: 2011-11-08 (火) 15:18:07