以下 sql 是 FUNCTION 的一部分,我想回滚到 rbk SAVEPOINT:
for ptrEnt in entite loop
-- positionnement du point de retour pour une entité
savepoint rbk;
-- purge de la table des redevances de l''entite
test := pckg_activ.initredevanceentite(ptrEnt.cod_ent);
-- calcul de la redevance
test := pckg_activ.calculredevanceentite(ptrEnt.cod_ent);
-- controle calcul de la bonne execution pour l''entité
if (test = 0) then
-- initialisation des departements associes a une entite
test := pckg_activ.initdepartement(ptrEnt.cod_ent);
-- validation des modifications
commit;
-- generation de l''etat recapitulatif
test := pckg_activ.recapentitegestionnaire(ptrEnt.cod_ent,ficHisto);
else
rollback TO SAVEPOINT rbk;
report := jour + 7;
update sav_rdv_date
set date_dem = report
where cod_ent = ptrEnt.cod_ent;
RAISE NOTICE '!!erreur de patrimoine => abandon du traitement pour cette entite';
commit;
end if;
end loop;
entite是一个已声明的游标,for 循环位于BEGIN块中。
我收到错误错误: syntax error at or near "TO"
。我认为语法是正确的,它与光标有关吗?
您不能在 PostgreSQL 函数中使用事务管理语句。
在 v11 中引入的过程中添加了对此的有限支持。
EXCEPTION
但是您可以(隐式)通过在块中使用子句来使用保存点。所以而不是
你应该使用