PostgreSQL

PostgreSQL 無名ブロックサンプル

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

上記例題で使っているプロシージャのサンプルは以下です

スポンサーリンク
タイトルとURLをコピーしました