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循环语法模板
最新推荐文章于 2024-07-08 18:15:55 发布
本文介绍了PostgreSQL中一个名为p_test的自定义函数,该函数在PL/pgSQL语言环境下声明并使用了变量V_STARTTIME、V_ENDTIME和V_ERROR。函数通过FOR循环遍历日期,并在循环内部执行存储过程。在遇到错误时,函数会自定义错误信息并使用RAISE EXCEPTION抛出。示例输出显示了函数在不同日期参数下的执行情况。

4607

被折叠的 条评论
为什么被折叠?



