
Hola mis camaradas tengo ya aproximadamente 2 dias de estar buscando en google y no encuentro ninguna solución .
Tengo el siguiente procedimiento almacenado:
Código PHP:
/*
Retornar el resultado de una consulta
*/
DROP FUNCTION retornarConsulta2();
CREATE OR REPLACE FUNCTION retornarConsulta2() RETURNS setof RECORD AS $$
DECLARE
registro RECORD;
registrob RECORD;
BEGIN
FOR registro IN EXECUTE 'select cedula,nombre from detalle_pago where cod_planilla = ((select max(cod_planilla) from detalle_pago where entidad in(''CA'',''BN''))) and sucursal = 12 and entidad = ''BN''' LOOP
/*
SELECCIONAR A LAS PERSONAS QUE NO APARECIERON EN LA PLANILLA ANTERIOR
*/
FOR registrob IN EXECUTE 'select count(*) as conteo from detalle_pago where cod_planilla = 4 and sucursal = 12 and entidad = ''BN'' and cedula = ''registro.cedula'' ' LOOP
IF registrob.conteo = 0 THEN
RETURN NEXT registro;
END IF;
END LOOP;
END LOOP;
RETURN ;
END
$$ LANGUAGE plpgsql;
select * from retornarConsulta2() as (cedula character varying, nombre character varying);
En donde tengo un ciclo anidado , todo normal el procedimiento se almacena sin ningun problema pero el problema esta en la salida no es la que yo deseo , ya que si el resultado de mi consulta interna si es igual a cero me deberia almacenar mi numero de cedula que me viene de mi ciclo externo y lastimosamente no es asi ya que me manda todo el listado del ciclo exterior , la verdad no se si mi condicion IF - THEN esta bien la verdad no tengo idea ya que soy un novato en esto de PLSQL y de veras estaria muy agradecido si me pudiesen ayudar con esto