No es sorpresa. El lenguaje SQL no admite variables. Tienes que usar el lenguaje plpgsql.
CREATE OR REPLACE FUNCTION clean_emp()
RETURNS void AS $$
DECLARE cnt varchar;
BEGIN
END;
$$ LANGUAGE plpgsql;
Ver más en la documentación http://www.postgresql.org/docs/current /estático/plpgsql.html .
PostgreSQL tiene más lenguajes para escribir funciones. El lenguaje SQL es perfecto para macros de declaración única de una línea. El PLpgSQL es un lenguaje nativo clásico similar al PL/SQL de Oracle con SQL incorporado.