CREATE OR REPLACE FUNCTION test(e_num integer)
RETURNS integer AS
$BODY$
DECLARE
registro RECORD;
registro_anterior RECORD;
BEGIN
registro_anterior:=NULL;
FOR registro IN SELECT num , nombre FROM tabla LOOP
IF registro.num = e_num THEN
IF registro_anterior IS NULL THEN
RAISE NOTICE ' NO HAY ANTERIOR';
RETURN NULL;
ELSE
RAISE NOTICE ' ANTERIOR ES
%',registro_anterior.nombre;
RETURN registro_anterior.num;
END IF;
END IF;
registro_anterior=registro;
END LOOP;
RAISE NOTICE ' NO ENCONTRADO';
RETURN NULL ;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
esta es la logica, no funciona bien la validación del primer registro.
IF registro_anterior IS NULL THEN
El 28/01/2013 07:21 p.m., Roberto A. escribió:
Buenas a toda la comunidad.
Espero puedan ayudarme con un problema que me tiene ya varios dias sin
poderlo resolver.
Tengo una funcion en la cual tengo un bucle for loop que recorrer una
record y es aqui donde no se como hacer para que cuando dentro del for
al encontrar un valor determinado acceda a los valores de record en
una fila anterior.
ej:
el record tiene estas tabla cargada
num | nombre
1 | infantil
6 | juvenil
9 | majores
13 | libre
en la funcion tengo como paremetro el valor de la columna "num"
para este ejemplo pondre el 9 como parametro de entrada
al recorrer el record y se encuntre en la fila con num igual a 9
necesito capturar en una variable el valor de num pero de la fila
anterio que en este caso seria 6 .
no se si existe alguna forma usando records para obtener este valor o
tal vez existe otra forma de hacer esto
espero puedan ayudarme y de antemano gracias
Atte: Roberto A.
-
Enviado a la lista de correo pgsql-es-ayuda ([email protected])
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda