On Wed, 2025-03-26 at 20:27 +0000, Dirschel, Steve wrote:
> DO $$
>
> BEGIN
>
> EXECUTE 'create or replace procedure junk.test_proc() ' ||
> 'LANGUAGE plpgsql ' ||
> 'AS $$ ' ||
> 'declare ' ||
> ' v_cnt integer := 0; ' ||
> 'begin ' ||
> ' raise notice 'v_cnt is %', v_cnt; ' ||
> 'end $$';
>
> END;
>
> $$
>
> It throws this error:
>
> ERROR: syntax error at or near "$$
> DO $$"
> LINE 1: $$
> ^
> dbtest=>
> dbtest=> END;
> WARNING: there is no transaction in progress
> COMMIT
If you nest dollar quotes, you need to use different strings between the dollars:
DO $do$
BEGIN
EXECUTE 'CREATE PROCEDURE ... AS $fun$ ... $fun$';
END;
$do$;
Yours,
Laurenz Albe