ストアドプロシージャの作成
この前、テーブル全削除の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を忘れずに。
忘れちゃうと例外が起こってもメッセージを出力してくれませんので気をつけましょう。