I believe that WITH HOLD cursors was once on a TODO list for plpgsql
along with scrollable cursors. When scrollable cursors was implemented,
but not WITH HOLD, it was dropped from the TODO list.
Robert Haas mentioned in:
http://www.postgresql.org/message-id/AANLkTikjVF6bENfxv-et75g-vHnRyy0y0B+og6BprhgQ@mail.gmail.com
that "...it's not really clear what WITH HOLD would do for you." It
makes some sense given that procedures don't support commit/rollback.
However, you might want to return a ref cursor and it certainly might be
useful to have as a with hold cursor.
It seems that independent of the issue of support for transactions in
plpgsql we should support with hold cursors.