-- Function: eleccionrapida(integer, integer) DROP FUNCTION eleccionrapida(integer, integer, integer); CREATE OR REPLACE FUNCTION eleccionrapida(evento integer, ronda integer, criterio integer = 0) RETURNS integer AS $BODY$ DECLARE juez RECORD; chica RECORD; criterios RECORD; pm integer; r integer; BEGIN pm = (select puntuacion_maxima from "CertamenTabasco_ronda" where id = ronda); r = 0; FOR juez IN SELECT * FROM "CertamenTabasco_juez" LOOP FOR chica IN SELECT * FROM "CertamenTabasco_participante" where ronda_id=ronda LOOP FOR criterios IN SELECT * FROM "CertamenTabasco_criterio" where (0 = criterio or id in (criterio)) and id in (select criterio_id from "CertamenTabasco_ronda_criterio" where ronda_id = ronda) LOOP if not exists ( select * from "CertamenTabasco_calificacion" where usuario_id=juez.user_ptr_id and activo=TRUE AND evento_id =EVENTO AND ronda_id=RONDA AND juez_id=juez.user_ptr_id AND participante_id = CHICA.ID AND criterio_id = CRITERIOs.ID) THEN INSERT INTO "CertamenTabasco_calificacion"(fecha_registro,usuario_id,activo,evento_id,ronda_id, juez_id,participante_id,criterio_id,calificacion) VALUES (now(),juez.user_ptr_id,TRUE,evento,ronda,juez.user_ptr_id,chica.id,criterios.id,trunc(random()*pm+1)); r = r + 1; END IF; END LOOP; END LOOP; END LOOP; RETURN r; END; $BODY$ LANGUAGE plpgsql VOLATILE COST 100; ALTER FUNCTION eleccionrapida(integer, integer, integer) OWNER TO postgres;