
Ayuda funcion contar con parámetros
Publicado por Manu (1 intervención) el 06/11/2013 16:31:13
Buenas tardes,
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.
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.
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:
Ahora mismo no puedo probarlo en pgAdminIII, pero no tengo muy claro primero que esta funcion sea correcta, y por otro lado creo que me falta la opción de poder consulta sin pasar parámetro (en caso de poner: ") y devuelva la cuenta de todos los empleados.
Sé que tiene que sonarle muy fácil al que entienda pero estoy en mis primeros pasos y todavía me atasco.
Puede alguien orientarme?
Gracias de antemano
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.
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.
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:
1
2
3
4
5
6
7
8
9
10
11
12
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
Ahora mismo no puedo probarlo en pgAdminIII, pero no tengo muy claro primero que esta funcion sea correcta, y por otro lado creo que me falta la opción de poder consulta sin pasar parámetro (en caso de poner: ") y devuelva la cuenta de todos los empleados.
Sé que tiene que sonarle muy fácil al que entienda pero estoy en mis primeros pasos y todavía me atasco.
Puede alguien orientarme?
Gracias de antemano
Valora esta pregunta


0