サンプル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=#

