既存の DWH システムは、日ごとにデータテーブルを作成するため、定期的なメンテナンスが煩雑になっています。たとえば、毎月末には当月に生成された一時テーブルをアーカイブする必要があります。
方法 1. SQL をバッチ生成し、固定の日付値で複数の SQL を生成します。SQL の生成方法はさまざまですが、すべての SQL が正しいかどうかを確認する必要があります。
方法 2. PL/SQL 関数を作成し、カーソルを使用してバッチ実行します。
drop function fun_datecursor(from_date text,to_date text,cond text);
create or replace function fun_datecursor(from_date text,to_date text,cond text) returns text
as $
declare
cur_date refcursor;
buffer text := '';
var_day date;
begin
open cur_date for execute 'SELECT generate_series('''|| from_date ||'''::date,'''|| to_date ||'''::date,'''|| cond ||''')';
loop -- ループを開始
fetch cur_date into var_day; -- カーソルの指定された値を変数に代入
if found then
---------------------------------------
-- 任意のロジック、または他の関数の呼び出し
---------------------------------------
buffer:= buffer || to_char(var_day,'yyyyMMdd');
else
exit;
end if;
end loop; -- ループを終了
close cur_date; -- カーソルを閉じる
return buffer;
end
$ language plpgsql;
関数を実行する
select fun_datecursor('2008-03-01','2008-03-31','1 day’);