Ja, das Statement ist syntaktisch falsch. Das kann so nie funktionieren.
CREATE FUNCTION ist anders als CREATE VIEW. PostgreSQL speichert bei einer View niemals den Text des definierenden SELECT-Statements; das Statement wird immer in geparster Form gespeichert. Weiters: Nachdem die View erzeugt worden ist, verhindert PostgreSQL, daß die in der View referenzierten Objekte gelöscht werden.