Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Convertir Funcion para consultar todos los usuarios!!!

Estas en el tema de Convertir Funcion para consultar todos los usuarios!!! en el foro de PostgreSQL en Foros del Web. Buenos dias, tardes y noches. El problema que tengo es QUE TENGO LA SIGUIENTE FUNCION: Código: CREATE OR REPLACE FUNCTION f_consulta_fondo_solidario_todos(v_ano_fondo smallint, v_id_area integer) RETURNS ...
  #1 (permalink)  
Antiguo 13/09/2010, 07:23
 
Fecha de Ingreso: julio-2010
Mensajes: 11
Antigüedad: 14 años, 3 meses
Puntos: 0
Pregunta Convertir Funcion para consultar todos los usuarios!!!

Buenos dias, tardes y noches.

El problema que tengo es QUE TENGO LA SIGUIENTE FUNCION:

Código:
CREATE OR REPLACE FUNCTION f_consulta_fondo_solidario_todos(v_ano_fondo smallint, v_id_area integer)
  RETURNS SETOF consulta_fondo_solidario AS
$BODY$
	DECLARE
		BENEFI RECORD;
		REGISTRO consulta_fondo_solidario;
		V_TOTALES_FONDO VARCHAR[];
		V_TOTALES_INDIV numeric;
	BEGIN
		FOR BENEFI IN SELECT 
				be.id,
				CASE
				
					WHEN be.consecutivo = 0 AND be.id_status_laboral  <> 'TJ'::text THEN 'Tit-'::text || f_smident(be.id)
					WHEN be.id_status_laboral= 'TJ'::text THEN 'Jub-'::text || f_smident(be.id) 
					ELSE 'Fam-'::text || f_smident(be.id) 
				END as identific,
				''::varchar as numero_sap,  
				(select nombre from "Beneficiario" where consecutivo=0) as nombre_titular, 
				date_part('year'::text,age(f_dato_benefi(id, 'fecha_nacimiento'::character varying, true)::timestamp without time zone)) AS edad_titular, 
				CASE WHEN F_DATO_BENEFI(id,'sexo',true)=1 THEN 'M' ELSE 'F' END as sexo_titular, 
				(select nombre from "Tipo_nomina" where id=be.id_tipo_nomina) as nomina, 
				''::varchar as grupo_personal, 
				(select nombre from "Area" where id = ANY (select id_area from "Beneficiario" where consecutivo=0)) as area_titular, 
				(select nombre from "Filial" where id =be.id_filial) as filial, 
				''::varchar as division, 
				(select localidad from "Localidad" where id=be.id_localidad) as localidad, 
				(select nombre from "Status_laboral" where id=be.id_status_laboral) as estatus_laboral, 
				cedula as cedula_participante, 
				nombre as participante, 
				(select nombre from "Parentesco" where id=be.id_parentesco) as parentesco, 
				date_part('year'::text,age(fecha_nacimiento)) AS edad_familiar, 
				CASE WHEN sexo=1 THEN 'M' ELSE 'F' END as sexo_familiar
				FROM "Beneficiario" AS be
				WHERE
					EXISTS (select id from "Status_laboral" where "Status_laboral".id = BE.ID_STATUS_LABORAL AND aplica_planes=true) 
					AND EXISTS (select id from "Parentesco" where "Parentesco".id = BE.id_parentesco AND aplica_fondo_solidario=true)
					AND EXISTS (select id from "Filial" where "Filial".id = BE.id_filial AND aplica_fondo_solidario=true)
					AND EXISTS(SELECT ID FROM "Ajuste_y_transferencia_de_fondo" aj WHERE  ANO_FONDO=V_ANO_FONDO and  (be.cedula_titular= substr(id_beneficiario_desde,1,9)::int OR be.cedula_titular= substr(id_beneficiario_hasta,1,9)::int))
					AND CASE WHEN V_ID_AREA=0 THEN 0=0 ELSE be.id_area= V_ID_AREA END
		LOOP
			IF (V_ANO_FONDO=TO_CHAR(CURRENT_DATE,'YYYY')) THEN
				V_TOTALES_FONDO= (SELECT ARRAY[p,i,f] FROM (select nombre as p,sum(pote)::varchar as i,sum(disponible)::varchar as f from f_suma_pote_familia_por_beneficiario(BENEFI.id) where aplica_fondo_solidario= true and aplica_planes=true and id_plan='plan1' group by 1) as f);
				V_TOTALES_INDIV= (select pote from f_suma_pote_por_beneficiario(BENEFI.ID) where aplica_fondo_solidario= true and aplica_planes=true and id_plan='plan1');
			ELSE
				V_TOTALES_FONDO= (SELECT ARRAY[p,i,f] FROM (select nombre as p,sum(pote)::varchar as i,sum(disponible)::varchar as f from f_suma_pote_familia_por_beneficiario_anos_anteriores(BENEFI.id,V_ANO_FONDO) where aplica_fondo_solidario= true and aplica_planes=true and id_plan='plan1' group by 1) as f);
				V_TOTALES_INDIV= (select pote from f_suma_pote_por_beneficiario_anos_anteriores(BENEFI.ID,V_ANO_FONDO) where aplica_fondo_solidario= true and aplica_planes=true and id_plan='plan1');
			END IF;
			FOR REGISTRO IN SELECT 
				V_TOTALES_FONDO[1],BENEFI.identific,BENEFI.NUMERO_SAP,BENEFI.CEDULA_TITULAR,BENEFI.NOMBRE_TITULAR,BENEFI.EDAD_TITULAR,BENEFI.SEXO_TITULAR,BENEFI.NOMINA,BENEFI.GRUPO_PERSONAL,BENEFI.AREA_TITULAR,BENEFI.FILIAL,BENEFI.DIVISION,BENEFI.LOCALIDAD,BENEFI.ESTATUS_LABORAL, 
				BENEFI.CEDULA_PARTICIPANTE,BENEFI.PARTICIPANTE,BENEFI.PARENTESCO,BENEFI.EDAD_FAMILIAR,BENEFI.SEXO_FAMILIAR,V_TOTALES_INDIV,V_TOTALES_FONDO[2]::numeric - V_TOTALES_INDIV,V_TOTALES_FONDO[2]::numeric,V_TOTALES_FONDO[3]::numeric
			LOOP 
				RETURN NEXT REGISTRO;
			END LOOP;
		END LOOP;
	END;
	
$BODY$
  LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION f_consulta_fondo_solidario_todos(smallint, integer) OWNER TO sigplan;
GRANT EXECUTE ON FUNCTION f_consulta_fondo_solidario_todos(smallint, integer) TO public;
GRANT EXECUTE ON FUNCTION f_consulta_fondo_solidario_todos(smallint, integer) TO sigplan;
GRANT EXECUTE ON FUNCTION f_consulta_fondo_solidario_todos(smallint, integer) TO sigplan_app_grupo;
GRANT EXECUTE ON FUNCTION f_consulta_fondo_solidario_todos(smallint, integer) TO sigplan_auditoria_grupo;
EL PROBLEMA ESTA EN QUE ME ARROGA REGISTROS MULTIPLES Y CREO QUE HAY QUE PONERLE UN CONTROLADOR (IF O ALGO ASI)

CUANDO EJECUTO LA SIGUIENTE CONSULTA EN LA FUNCION " f_consulta_fondo_solidario_todos"

Código:
select plan,identific,numero_sap as "Nº de Sap",cedula_titular as "Cédula titular",nombre_titular as "Nombre titular", edad_titular as "Edad titular", 
sexo_titular as "Sexo titular", nomina as nómina,grupo_personal as "Grupo de personal",area_titular as "Area titular",filial, division as división,
localidad,estatus_laboral as "Estatus del trabajador",cedula_participante  as "Cédula participante",participante, parentesco,edad_familiar as "Edad familiar", 
sexo_familiar as "Sexo familiar",monto_otorgado_individual as "Monto otorgado individual",monto_otorgado_fondo_sol as "Monto otorgado fondo solidario", 
monto_total_otorgado as "Monto total otorgado", saldo as "Saldo fondo solidario" 
from F_CONSULTA_FONDO_SOLIDARIO_TODOS(smallint '2010', integer '7')
ME RETORNA EL SIGUIENTE RROR:


[/CODE]ERROR: una subconsulta utilizada como expresión retornó más de un registro
CONTEXT: PL/pgSQL function "f_consulta_fondo_solidario_todos" line 7 at for over select rows

********** Error **********

ERROR: una subconsulta utilizada como expresión retornó más de un registro
SQL state: 21000
Context: PL/pgSQL function "f_consulta_fondo_solidario_todos" line 7 at for over select rows[/CODE]

Última edición por mourtblack; 13/09/2010 a las 07:36
  #2 (permalink)  
Antiguo 13/09/2010, 07:52
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Convertir Funcion para consultar todos los usuarios!!!

Cita:
EL PROBLEMA ESTA EN QUE ME ARROGA REGISTROS MULTIPLES Y CREO QUE HAY QUE PONERLE UN CONTROLADOR (IF O ALGO ASI)
Una función que te retorna multiples registros no puede ser llamada desde una consulta que está ligada a un unico registro.

podrías describir mejor cual es el objetivo de la función y como esperarías el resultado en la consulta que ejecutas?

saludos mourtblack
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 13/09/2010, 08:10
 
Fecha de Ingreso: julio-2010
Mensajes: 11
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Convertir Funcion para consultar todos los usuarios!!!

existe una tabla de parientes y una tabla de usuarios

por ejemplo:

pedro (usuarios)
padre (parientes)
madre (parientes)
hijo 1 (parientes)
hijo 2 (parientes)
hijo3 (parientes)

entonces de la id (clave primaria) de pedro busca y arroja a los parientes porq los parientes estan asociados.

entonces cuando hago la consulta se va a traer:

pedro
padre
madre
hijo 1
hijo 2
hijo3

juan
padre
madre
hijo 1
hijo 2
hijo3

andres
padre
madre
hijo 1
hijo 2
hijo 3

pero en la subconsulta donde busca a los parientes esta generando el error porq se estra trayendo mas de un registro en usuarios.

lo que quiero es saber donde coloco el while o el if para que se haga recursiva la funcion y cada vez que busque un usuario y sus parientes, se traiga el siguiente en la lista con sus parientes, asi sucesivamente hasta llegue a la ultima fila de la tabla usuarios.

Última edición por mourtblack; 13/09/2010 a las 08:16
  #4 (permalink)  
Antiguo 13/09/2010, 08:20
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Convertir Funcion para consultar todos los usuarios!!!

Estas un poco enredado. y hay algo que no había notado.

La función f_consulta_fondo_solidario_todos recibe 2 parametros que se los ingresas correctamente al momento de llamarla.

Mi pregunta es:
Todos estos campos
plan,identific,numero_sap as "Nº de Sap",cedula_titular as "Cédula titular",nombre_titular as "Nombre titular", edad_titular as "Edad titular",
sexo_titular as "Sexo titular", nomina as nómina,grupo_personal as "Grupo de personal",area_titular as "Area titular",filial, division as división,
localidad,estatus_laboral as "Estatus del trabajador",cedula_participante as "Cédula participante",participante, parentesco,edad_familiar as "Edad familiar",
sexo_familiar as "Sexo familiar",monto_otorgado_individual as "Monto otorgado individual",monto_otorgado_fondo_sol as "Monto otorgado fondo solidario",
monto_total_otorgado as "Monto total otorgado", saldo as "Saldo fondo solidario"



a que tabla pertenecen? de donde los sacas?

Cuando llamas
SELECT *FROM funcion(parametros)

el objetivo de llamar la función con *FROM es que la salida sea mostrada como una grilla equivalente a la consulta de una tabla. Si la llamas
SELECT funcion(parametros)
te retorna los mismos datos pero en una salida en forma de arrays.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 13/09/2010, 08:30
 
Fecha de Ingreso: julio-2010
Mensajes: 11
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Convertir Funcion para consultar todos los usuarios!!!

de la tabla be que en realidad es la tabla usuario pero que en la pagina se ha declarado usuario as be y asi se abrevia la palabra completa.

hay otras tablas como Area y filial que simplemente son la de en que area del pais esta ubicada el usuario (si en central, occidental, etc).

Porq la busqueda se hace por año y el area donde esta ubicado el usuario.

"SELECT *FROM funcion(parametros)" y "te retorna los mismos datos pero en una salida en forma de arrays." si me trae los datos en un array y por eso muestro los datos de esa forma porq de una vez me los imprime en una tabla.
  #6 (permalink)  
Antiguo 13/09/2010, 08:36
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Convertir Funcion para consultar todos los usuarios!!!

a ver si entiendo.

cuando ejecutas
Código SQL:
Ver original
  1. SELECT *FROM F_CONSULTA_FONDO_SOLIDARIO_TODOS(SMALLINT '2010', INTEGER '7');

te trae bien los datos?.

Pero de toda esa consulta solo quieres acceder a algunos resultados que retorna la función?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #7 (permalink)  
Antiguo 13/09/2010, 08:40
 
Fecha de Ingreso: julio-2010
Mensajes: 11
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Convertir Funcion para consultar todos los usuarios!!!

"Pero de toda esa consulta solo quieres acceder a algunos resultados que retorna la función?" eso eso eso XD

Quiero solo esa informacion y que las columnas me las renombre por ejemplo numero_sap as "Nº de Sap":

entonces en ves de imprimir en la tabla:


en vez de esto
numero_sap
0000000000


imprime esto:

Nº de Sap
0000000000

Cita:
Iniciado por huesos52 Ver Mensaje
a ver si entiendo.
cuando ejecutas
Código SQL:
Ver original
  1. SELECT *FROM F_CONSULTA_FONDO_SOLIDARIO_TODOS(SMALLINT '2010', INTEGER '7');
si ejecuto esto me trae el mismo error

ERROR: una subconsulta utilizada como expresión retornó más de un registro
CONTEXT: PL/pgSQL function "f_consulta_fondo_solidario_todos" line 7 at for over select rows

********** Error **********

ERROR: una subconsulta utilizada como expresión retornó más de un registro
SQL state: 21000
Context: PL/pgSQL function "f_consulta_fondo_solidario_todos" line 7 at for over select rows
  #8 (permalink)  
Antiguo 13/09/2010, 08:51
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Convertir Funcion para consultar todos los usuarios!!!

Jejejeje ahora si nos entendemos.

Prueba esto:

Código SQL:
Ver original
  1. SELECT
  2. plan,
  3. identific,
  4. numero_sap AS "Nº de Sap",
  5. cedula_titular AS "Cédula titular",
  6. nombre_titular AS "Nombre titular",
  7. edad_titular AS "Edad titular",
  8. sexo_titular AS "Sexo titular",
  9. nomina AS n&#243;mina,
  10. grupo_personal AS "Grupo de personal",
  11. area_titular AS "Area titular",
  12. filial,
  13. division AS division,
  14. localidad,
  15. estatus_laboral AS "Estatus del trabajador",
  16. cedula_participante  AS "Cédula participante",
  17. participante,
  18. parentesco,
  19. edad_familiar AS "Edad familiar",
  20. sexo_familiar AS "Sexo familiar",
  21. monto_otorgado_individual AS "Monto otorgado individual",
  22. monto_otorgado_fondo_sol AS "Monto otorgado fondo solidario",
  23. monto_total_otorgado AS "Monto total otorgado",
  24. saldo AS "Saldo fondo solidario"
  25. FROM
  26. (SELECT *FROM F_CONSULTA_FONDO_SOLIDARIO_TODOS(SMALLINT '2010', INTEGER '7')) AS tabla_resultante;

Para estos casos es necesario hacer uso de las subconsultas.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #9 (permalink)  
Antiguo 13/09/2010, 09:07
 
Fecha de Ingreso: julio-2010
Mensajes: 11
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Convertir Funcion para consultar todos los usuarios!!!

me sigue arrojando el error una subconsulta utilizada como expresión retornó más de un registro

me imagino que tal vez sea porq como no es un solo usuario, sino todos tienes que ir buscando cada uno de los parientes de todos esos usuarios.

cuando la funcion pasa a la segunda consulta a los usuario se queda trabada la consulta o algo asi.

tanvez le haga falta un while (row_usuario > 0 ). quizas se tenga que hacer un contador primero que me cuente el numero de usuarios de la tabla usuarios y luego colocar el resultado en un while. o algo asi.

OJO LA CONSULTA ESTA BIEN COMO LA TENGO, LO QUE TENGO QUE MODIFICAR ES LA FUNCION.

Última edición por mourtblack; 13/09/2010 a las 09:14
  #10 (permalink)  
Antiguo 13/09/2010, 09:19
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Convertir Funcion para consultar todos los usuarios!!!

Tu problema es muy especifico y no tengo como detectar que es lo que quieres.

lo que pensé que requerias cuando me dijsite que la función llamada con *FROM te retornaba bien era esto

Código SQL:
Ver original
  1. pruebas=> CREATE OR REPLACE FUNCTION obtenerempleados() RETURNS SETOF empleado AS
  2. pruebas-> $BODY$
  3. pruebas$> DECLARE
  4. pruebas$>     r empleado&#37;rowtype;
  5. pruebas$> BEGIN
  6. pruebas$>     FOR r IN SELECT * FROM empleado
  7. pruebas$>     LOOP
  8. pruebas$>         RETURN NEXT r;
  9. pruebas$>     END LOOP;
  10. pruebas$>     RETURN;
  11. pruebas$> END
  12. pruebas$> $BODY$
  13. pruebas-> LANGUAGE 'plpgsql' ;
  14. CREATE FUNCTION
  15. pruebas=> SELECT *FROM obtenerempleados();
  16.  id | nombre | telefono
  17. ----+--------+----------
  18.   3 | monica | 8890208
  19. (1 fila)
  20.  
  21. pruebas=> SELECT id AS codigo,nombre AS "Nombre Persona"
  22. pruebas->FROM (SELECT *FROM obtenerempleados()) AS tabla_resultante;
  23.  codigo | Nombre Persona
  24. --------+----------------
  25.       3 | monica
  26. (1 fila)

si tu función llamada con *FROM funciona bien, este metodo no debería traerte problemas.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #11 (permalink)  
Antiguo 13/09/2010, 09:21
 
Fecha de Ingreso: julio-2010
Mensajes: 11
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Convertir Funcion para consultar todos los usuarios!!!

MIRA ESTA ES LA FUNCION ORIGINAL, QUE SI FUNCIONA CON EL PARAMETRO CEDULA QUE ES LA ID DEL USUARIO EN LA TABLA BENEFICIARIO QUE ES EL BE. (v_cedula_titular)

CREATE OR REPLACE FUNCTION f_consulta_fondo_solidario(v_ano_fondo smallint, v_id_area integer, v_cedula_titular character varying)
RETURNS SETOF consulta_fondo_solidario AS
$BODY$
DECLARE
BENEFI RECORD;
REGISTRO consulta_fondo_solidario;
V_TOTALES_FONDO VARCHAR[];
V_TOTALES_INDIV numeric;
BEGIN
FOR BENEFI IN SELECT
be.id,
CASE
WHEN be.consecutivo = 0 AND be.id_status_laboral <> 'TJ'::text THEN 'Tit-'::text || f_smident(be.id)
WHEN be.id_status_laboral= 'TJ'::text THEN 'Jub-'::text || f_smident(be.id)
ELSE 'Fam-'::text || f_smident(be.id)
END as identific,
''::varchar as numero_sap,
cedula_titular as cedula_titular,
(select nombre from "Beneficiario" where cedula_titular=be.cedula_titular and consecutivo=0) as nombre_titular,
date_part('year'::text,age(f_dato_benefi(id, 'fecha_nacimiento'::character varying, true)::timestamp without time zone)) AS edad_titular,
CASE WHEN F_DATO_BENEFI(id,'sexo',true)=1 THEN 'M' ELSE 'F' END as sexo_titular,
(select nombre from "Tipo_nomina" where id=be.id_tipo_nomina) as nomina,
''::varchar as grupo_personal,
(select nombre from "Area" where id =(select id_area from "Beneficiario" where cedula_titular=be.cedula_titular and consecutivo=0)) as area_titular,
(select nombre from "Filial" where id =be.id_filial) as filial,
''::varchar as division,
(select localidad from "Localidad" where id=be.id_localidad) as localidad,
(select nombre from "Status_laboral" where id=be.id_status_laboral) as estatus_laboral,
cedula as cedula_participante,
nombre as participante,
(select nombre from "Parentesco" where id=be.id_parentesco) as parentesco,
date_part('year'::text,age(fecha_nacimiento)) AS edad_familiar,
CASE WHEN sexo=1 THEN 'M' ELSE 'F' END as sexo_familiar
FROM "Beneficiario" AS be
WHERE
EXISTS (select id from "Status_laboral" where "Status_laboral".id = BE.ID_STATUS_LABORAL AND aplica_planes=true)
AND EXISTS (select id from "Parentesco" where "Parentesco".id = BE.id_parentesco AND aplica_fondo_solidario=true)
AND EXISTS (select id from "Filial" where "Filial".id = BE.id_filial AND aplica_fondo_solidario=true)
AND EXISTS(SELECT ID FROM "Ajuste_y_transferencia_de_fondo" aj WHERE ANO_FONDO=V_ANO_FONDO and (be.cedula_titular= substr(id_beneficiario_desde,1,9)::int OR be.cedula_titular= substr(id_beneficiario_hasta,1,9)::int))
AND CASE WHEN V_ID_AREA=0 THEN 0=0 ELSE be.id_area= V_ID_AREA END
AND CASE WHEN V_CEDULA_TITULAR='' THEN 0=0 ELSE be.cedula_titular=V_CEDULA_TITULAR END
LOOP
IF (V_ANO_FONDO=TO_CHAR(CURRENT_DATE,'YYYY')) THEN
V_TOTALES_FONDO=(SELECT ARRAY[p,i,f] FROM (select nombre as p,sum(pote)::varchar as i,sum(disponible)::varchar as f from f_suma_pote_familia_por_beneficiario(BENEFI.id) where aplica_fondo_solidario= true and aplica_planes=true and id_plan='plan1' group by 1) as f);
V_TOTALES_INDIV=(select pote from f_suma_pote_por_beneficiario(BENEFI.ID) where aplica_fondo_solidario= true and aplica_planes=true and id_plan='plan1');
ELSE
V_TOTALES_FONDO=(SELECT ARRAY[p,i,f] FROM (select nombre as p,sum(pote)::varchar as i,sum(disponible)::varchar as f from f_suma_pote_familia_por_beneficiario_anos_anterior es(BENEFI.id,V_ANO_FONDO) where aplica_fondo_solidario= true and aplica_planes=true and id_plan='plan1' group by 1) as f);
V_TOTALES_INDIV=(select pote from f_suma_pote_por_beneficiario_anos_anteriores(BENEF I.ID,V_ANO_FONDO) where aplica_fondo_solidario= true and aplica_planes=true and id_plan='plan1');
END IF;
FOR REGISTRO IN SELECT
V_TOTALES_FONDO[1],BENEFI.identific,BENEFI.NUMERO_SAP,BENEFI.CEDULA_ TITULAR,BENEFI.NOMBRE_TITULAR,BENEFI.EDAD_TITULAR, BENEFI.SEXO_TITULAR,BENEFI.NOMINA,BENEFI.GRUPO_PER SONAL,BENEFI.AREA_TITULAR,BENEFI.FILIAL,BENEFI.DIV ISION,BENEFI.LOCALIDAD,BENEFI.ESTATUS_LABORAL, BENEFI.CEDULA_PARTICIPANTE,BENEFI.PARTICIPANTE,BEN EFI.PARENTESCO,BENEFI.EDAD_FAMILIAR,BENEFI.SEXO_FA MILIAR,V_TOTALES_INDIV,V_TOTALES_FONDO[2]::numeric - V_TOTALES_INDIV,V_TOTALES_FONDO[2]::numeric,V_TOTALES_FONDO[3]::numeric
LOOP
RETURN NEXT REGISTRO;
END LOOP;
END LOOP;
END;

$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION f_consulta_fondo_solidario(smallint, integer, character varying) OWNER TO sigplan;
GRANT EXECUTE ON FUNCTION f_consulta_fondo_solidario(smallint, integer, character varying) TO sigplan;
GRANT EXECUTE ON FUNCTION f_consulta_fondo_solidario(smallint, integer, character varying) TO public;
GRANT EXECUTE ON FUNCTION f_consulta_fondo_solidario(smallint, integer, character varying) TO sigplan_app_grupo;
GRANT EXECUTE ON FUNCTION f_consulta_fondo_solidario(smallint, integer, character varying) TO sigplan_auditoria_grupo;

LO QUE QUIERO ES MODIFICAR ESTA FUNCION PARA QUE TRABAJE SOLO CON LOS OTROS DOS PARAMETROS. (ELIMINANDO v_cedula_titular)

CREATE OR REPLACE FUNCTION f_consulta_fondo_solidario(v_ano_fondo smallint, v_id_area integer)
  #12 (permalink)  
Antiguo 13/09/2010, 09:28
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Convertir Funcion para consultar todos los usuarios!!!

Cita:
LO QUE QUIERO ES MODIFICAR ESTA FUNCION PARA QUE TRABAJE SOLO CON LOS OTROS DOS PARAMETROS. (ELIMINANDO v_cedula_titular)
mayuscula y negrilla?
vaya si me suena a que me das una orden.

solucionalo vos o espera que otro usuario mas paciente te eche una mano.

Como consejo... nadie va a entender la lógica de tu negocio, ni le va a interesar para que sirve cada campo o tabla. Aca se tratan temas de bases de datos. Si tienes un problema, pasalo a terminos de pepito y fulano y luego vos lo implementas a tu problema real.

Nos vemos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #13 (permalink)  
Antiguo 13/09/2010, 11:52
 
Fecha de Ingreso: julio-2010
Mensajes: 11
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Convertir Funcion para consultar todos los usuarios!!!

Cita:
Iniciado por huesos52 Ver Mensaje
mayuscula y negrilla?
vaya si me suena a que me das una orden.
perdon si se entendio mal lo que escribi, no fue una orden solo que lo remarque para hacer enfasis en lo que estoy necesitando. nunca quise que mal interpretaras el texo.

lo que necesito es hacer que esa funcion trabaje sin el parametro cedula no mas.
  #14 (permalink)  
Antiguo 13/09/2010, 12:16
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Convertir Funcion para consultar todos los usuarios!!!

Cita:
perdon si se entendio mal lo que escribi, no fue una orden solo que lo remarque para hacer enfasis en lo que estoy necesitando. nunca quise que mal interpretaras el texo.
No te preocupes mourtblack

Pero por favor pon tu problema en terminos sencillos. de un ejemplo sencillo hablando de casos sencillos hipoteticos. Ya con la solución, la implementas a tu problema.
Tu codigo es muy largo, tiene muchos parametros que no son entendibles. Puede que para ti que lo manejas y sabes que hace puede resultar legible, para otras personas no.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: consultar, funcion, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:28.