サンプル1 テストデータ作成などに利用するケース
ストアドするほどではないのだけれど、とりあえず簡単なプロシージャを書きたい時や、簡単なテストデータを作成したい時など活躍します。
-- 以下サンプルプログラム用にテーブル作成 create table ex304 (cnt integer ,col1 character varying,col2 integer) ;
DO $$ declare cnt integer; begin cnt :=0; for j in 1..5 loop for i in 1..10 loop cnt :=cnt + 1; insert into ex304 values(cnt,'tes'||(cnt::varchar),round(( random() * (1 - 1000) )::numeric, 0) + 1000 ); end loop; commit; raise info 'commitしました %' , cnt::varchar; end loop; end; $$ ;
サンプル2 OUTパラメータを持つストアドプロシージャを実行するケース
DO $$ DECLARE v_name character varying; v_quantity integer; v_earnings integer; v_result_message character varying; v_isdebug boolean; BEGIN v_name :='みかん1'; v_quantity := 10; v_earnings := 0; v_result_message := null; v_isdebug := false; call sooni.proceeds_kudamono(v_name,v_quantity,v_earnings,v_result_message,v_isdebug); raise info 'proceeds_kudamono()の結果: v_earnings:% v_result_message:%', v_earnings,v_result_message; END $$ ;
実行例
INFO: [ proceeds_kudamono() ] p_name:みかん1 p_quantity:10 p_earnings:0 P_isdebug:<NULL> p_result_message:f
INFO: proceeds_kudamono()の結果: v_earnings:10 v_result_message:正常終了
D
myposdb=#