CREATE OR REPLACE FUNCTION p_test(p_syscd TEXT) RETURNS TEXT AS
$BODY$ DECLARE V_STARTTIME TIMESTAMP WITHOUT TIME ZONE; ---定义任务开始时间
V_ENDTIME TIMESTAMP WITHOUT TIME ZONE; ----定义任务结束时间
V_ERROR VARCHAR(1000) := '0'; ---错误的处理程序
V_SQLERRM VARCHAR(1000);
v_d RECORD;
BEGIN
FOR v_d IN (select date(zz)-1 dates, to_char(date(zz)-1, 'yyyymmdd') dtstr
from generate_series(date_trunc('month', to_date('20150501', 'yyyymmdd')),
date_trunc('day', now()),
'1 day') as tt(zz)) loop
BEGIN
raise notice 'Parameter is: %', v_d.dtstr; --条件判断
IF 1 = 1 THEN
V_STARTTIME := NOW(); ---执行存储过程
PERFORM V_PRC_NAME;
V_ENDTIME := NOW();
ELSE
V_ERROR := V_ERROR || ',' || '作业执行条件不满足';
RAISE EXCEPTION '%', V_ERROR;
END IF;
EXCEPTION
WHEN OTHERS THEN
V_SQLERRM := SQLERRM;
END;
END LOOP;
RETURN COALESCE(V_SQLERRM, '0');
END $BODY$
LANGUAGE 'plpgsql' VOLATILE;
select p_test('A')
结果:
[SQL]select dws.p_test ('A')
NOTICE: Parameter is: 20150501
NOTICE: Parameter is: 20150502
NOTICE: Parameter is: 20150503
NOTICE: Parameter is: 20150504
NOTICE: Parameter is: 20150505 ....
postpresql 打印变量+自定义错误并返回+for循环语法模板
最新推荐文章于 2023-07-16 13:52:37 发布