DO

$$
<<바깥쪽블록>>
DECLARE

    V_NUM1  INT := 10;
    V_NUM2  INT := 0;
    V_NUM3  INT;

    V_MSG   VARCHAR(10) := '메인 메시지';

BEGIN
    
    <<안쪽블록>>
    DECLARE
        
        V_MSG2  TEXT := '안쪽 메시지';
        
    BEGIN

        RAISE NOTICE '-> 1. % : %', V_MSG, V_MSG2;

    END 안쪽블록;

    RAISE NOTICE '-> 2. %', V_MSG || ' : 본문 실행';

    V_NUM3 := V_NUM1 / V_NUM2;

    RAISE NOTICE '-> 3. %', V_NUM3;

    -- COMMIT;

    EXCEPTION
        WHEN OTHERS THEN
            -- ROLLBACK
            RAISE '% : %', SQLSTATE, SQLERRM
                USING HINT = 'Raized Error Anonymous Block';
    
END 바깥쪽블록;
$$ LANGUAGE PLPGSQL;