Hi, I think PL/pgSQL is reporting unexpected errors when dealing with DECLARE blocks paired with <<label>>. I have approximated the program to a clean situation. When I execute this program, the PL/pgSQL engine does not report errors to me:
DO $$ DECLARE DECLARE var1 INT = 1; BEGIN RAISE NOTICE '%', var1; END; $$;
But when I try to add <<label>> before the second DECLARE block, the PL/pgSQL engine prompts me with this error message:
DO $$ DECLARE <<label>> DECLARE var1 INT = 1; BEGIN RAISE NOTICE '%', var1; END; $$;
> ERROR: block label must be placed before DECLARE, not after LINE 3: <<label>> ^
It seems to think that I am adding <<label>> after the first DECLARE block, which is not my intention. I do add the <<label>> before the second DECLARE block. Why is this program being reported as an error? Is this a bug in PL/pgSQL's handling of <<label>>?
Looking forward and thank you for your response to this question.
There cannot be labels between DECLARE keywords. The label in this case is not related to DECLARE, but to the following BEGIN END block.