It doesn't works putting that block inside additional BEGIN END CREATE OR REPLACE PROCEDURE TEST_TRANSACTION( ) LANGUAGE 'plpgsql' SECURITY DEFINER AS $BODY$ DECLARE G_LAST_UPDATE_USER_SYSTEM VARCHAR2(6) := 'SYSTEM'; G_LAST_UPDATE_MODULE_BATCH VARCHAR2(5) := 'BATCH';
G_CNTR_LOADING_EXPIRED TMS_CONTAINER_LOADING.STATUS_CODE%TYPE := '90'; G_DG_MANIFEST_DELETED TMS_DG_MANIFEST.STATUS_CODE%TYPE := '80'; G_DG_MANIFEST_COMPLETED TMS_DG_MANIFEST.STATUS_CODE%TYPE := '95'; v_num_day numeric; v_batch_count numeric; v_log_count numeric := 0; v_local_batch_count numeric; BEGIN v_batch_count := 0; LOOP BEGIN update tms_container_loading set status_code = G_CNTR_LOADING_EXPIRED , last_update_tm = clock_timestamp()::timestamp(0) , last_update_user_an = G_LAST_UPDATE_USER_SYSTEM , last_update_module_code = G_LAST_UPDATE_MODULE_BATCH where tms$vvd.is_vessel_departed(vessel_visit_c,trunc(clock_timestamp()::timestamp(0))) = 1 and coalesce(status_code,'~') <> G_CNTR_LOADING_EXPIRED and ctid in (select ctid from tms_container_loading where tms$vvd.is_vessel_departed(vessel_visit_c,trunc(clock_timestamp()::timestamp(0))) = 1 and coalesce(status_code,'~') <> G_CNTR_LOADING_EXPIRED LIMIT 20); EXIT WHEN NOT FOUND; /* apply on SQL */ GET DIAGNOSTICS v_local_batch_count = ROW_COUNT; v_batch_count := v_batch_count + v_local_batch_count; raise info ' I came here %',v_batch_count; END; COMMIT; END LOOP; raise info ' I came here %',v_batch_count; v_log_count := v_log_count + 1; v_log_count); END; $BODY$; while calling INFO: I came here 20 ERROR: invalid transaction termination CONTEXT: PL/pgSQL function test_transaction() line 48 at COMMIT On Tue, Nov 24, 2020 at 12:17 AM Michael Lewis <mle...@entrata.com> wrote: > On Mon, Nov 23, 2020 at 10:03 AM Jagmohan Kaintura < > jagmo...@tecorelabs.com> wrote: > >> Hi , >> The Block is only failing immediately at First COMMIT only. It's not >> supporting COMMIT. I have removed some portion of code before the second >> COMMIT. >> > > Please don't top-post on the Postgres lists by the way (reply with all > previous conversation copied below). > > The only way this would happen that I am aware of is if you called begin > before your batch function. > >> -- *Best Regards,* Jagmohan Senior Consultant, TecoreLabs.