【postgreSQL】SQLだけでループ処理

昔SQL Serverを使ってたころはよくクエリアナライザでwhile文を作って、テストデータを作ってましたが、postgreSQLでもできるのかなーと思って調べてみました。

結論から言うと、postgreSQLではユーザ定義関数(ストアドでもOK)を作って、それを実行する手順となるようです。

こことか参考に

実行したサンプル↓

drop function default.instest1();
create function default.instest1() returns int as
'
declare
  i integer;
  sql varchar(200);
begin
  i := 200;
  while i < 220 loop
    i:= i+1;
    sql := ''insert into default.sample( a0010, a0020, a0070 ) values( '' || i || '', '' || i || '', ''''suga'''' )'';
    execute sql;
  end loop;
  return 0;
end;
'
language 'plpgsql'
select default.instest1()

できるにはできるけど、めんどくさいし分かりにくい。

これだったらPHPでループ文書いた方が楽。