Does a COMMIT work within an anonymous plgpsql function in PostgreSQL 9.5?
No,

You can't control a transaction inside a plpgsql function (or anonymous block).

The only option that you have its creating a transaction outside the block, eg:

BEGIN;

DO $$
  -- function stuff

  -- but if you use a exception, you will force a rollback
  RAISE EXCEPTION 'message';
$$ LANGUAGE 'plpgsql';

COMMIT; -- OR ROLLBACK


BTW, DO BLOCKS have the same effect that functions who returns void.

Please, see more at the doc:


https://www.postgresql.org/docs/current/static/sql-do.html