A Day In The Life

とあるプログラマの備忘録

ストアドプロシージャの作成

この前、テーブル全削除のPL/SQLを作成しました。

しかし毎回テキストを開いて貼り付けて実行って手順が面倒になってきたのでプロシージャとして作成することにしました。

基本構文は

create or replace procedure

なんですが久々だったので結構忘れちゃって苦労しました(^_^;)

最終的にはこんな↓感じにしてみました。

create or replace procedure table_init
is
 wk_sql varchar2(1000);
 usertable user_tables%rowtype;
 cursor cu is select * from user_tables;
begin
 open cu;
 loop
  fetch cu into usertable;
  exit when cu%notfound;
  wk_sql := 'truncate table ' || usertable.table_name;
  EXECUTE IMMEDIATE wk_sql;
 end loop;
 close cu;
exception
 when OTHERS then
  dbms_output.put_line(SQLCODE || ',' || SQLERRM);
end;
/

例外処理はいらんかもしれませんが念のため。

ちなみにcreate procedureでコンパイルエラーが起こった時はshow errorsで確認しましょう。

作成したストアドプロシージャを実行する方法は2つあります。

SQL>execute table_init

これはおなじみの方法ですね。もうひとつ

SQL>call table_init()

う〜んこの方法は知りませんでした。

削除するときは

SQL>drop procedure table_init

でOKです。



いや〜勉強になりました。



そうそう、実行するときはset serveroutput onを忘れずに。

忘れちゃうと例外が起こってもメッセージを出力してくれませんので気をつけましょう。

関連記事