retrun multiple functions from dynamic query
It looks like indzone is a varchar(20), not a text - you could either specify the returned record using the former, or cast indzone inside the function.  (This applies to the solution suggested below, too.)

But:

As it looks like, you don't need any dynamic SQL in your function, as you never use any object (table, column, etc.) name specified on the fly.  Your query could look like

SELECT indzone, dstr, nmindar, plno, pltar, nmalt 
  FROM plotboundary 
 WHERE indzone = ind_zone AND [...]
   AND implst = COALESCE(_implst, implst) -- changed the `IN` parameter name to avoid confusion
   AND rsvr = COALESCE(_rsvr, rsvr)
   AND [...]


In certain (I'd say rare) cases, this can be less efficient than you version, but that you can find out easily on your data.  Most probably a well chosen index on the 'fix' columns (that are always compared to the incoming parameters) saves you worrying about it.