Soy primerizo en PostgreSQL y el lenguaje PL/pgSQL, y tengo una duda sobre un ejercicio que estoy haciendo a ver si alguien me la puede aclarar. La verdad es que he estado dando vueltas y vueltas sin encontrar ejemplos claros sobre como funcionan las funciones en general y las funciones con parámetros en particular.
A ver si lo explico con claridad.
Supongamos que tengo una base de datos llamada "empresa", un esquema llamado "personal" y dentro de este esquema una tabla llamada "trabajadores" que tiene los campos id_trabajador, nombre, apellidos, telefono, id_oficina que referencia a otra tabla de oficinas de un esquema llamado "comercial".
El ejercicio me pide que cuente a todos los trabajadores que haya en una oficina determinada, dando el código de oficina como parámetro y si no se pone el código se debe entender que se contarán a todos los trabajadores.
Hasta donde llego, la función podría ser esta:
Código SQL:
Ver original
CREATE OR REPLACE FUNCTION compempleados (cuentaoficinas INTEGER) RETURNS NUMERIC AS DECLARE numempleados INTEGER; BEGIN numempleados = 0; FOR numempleados IN SELECT a.id_oficina, COUNT(*) FROM personal.trabajadores GROUP BY a.id_oficina LOOP RETURN NEXT numempleados; END LOOP; END; LANGUAGE plpgsql VOLATILE
Cualquiera que sepa algo de pl/pgsql verá no sólo que esta función está mal sino que además no tengo ni idea. Sé que no es excesivamente complicado pero al no encontrar ejemplos claros como sí hay en SQL, me estoy liando a base de bien.
Puede alguien orientarme?
Gracias de antemano