That looks to me like an error from PostgreSQL rather than from InstallShield.
When I look at a function that works in my database, I see something like:
CREATE OR REPLACE some_function()
RETURNS integer AS
$BODY$
Begin
return 1;
end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
So, I suggest putting something between the two dollar signs. I believe, but I'm not positive, that the text between the dollar signs is merely an identifier. If you don't have that identifier, I can imagine PostgreSQL getting confused.
Good luck!
RobR
P.S. Please keep in mind that this advice may be worth exactly what you have paid for it.