Postgres is just as picky, it just doesn't have procedures, only functions :)
That's because there's no procedureal language "mode" in Postgresql (when you say "declare" or "begin" in SQL*Plus it invokes the PL/SQL compiler, rather than the SQL processor). In Postgres there's only the SQL processor, and the "hook" into programmatic languages is the functional call.