Hola a todos:
Me explico
TABLA (antes)**************************
********************************************
nombre valor
----------- --------
work_doc 266
solicitud 317
FUNCION ***********************************
***********************************************
CREATE OR REPLACE FUNCTION retorna_correlativo_tabla(nombre varchar, OUT resultado int )
AS
$BODY$
BEGIN
if nombre
update correlativos
set valor=valor + 1
where nombre=nombre;
resultado:= (select valor from correlativos where nombre=nombre);
END;
$BODY$
LANGUAGE 'plpgsql'
LLAMADO A FUNCION ******************
**********************************************
select retorna_correlativo_tabla('solicitud');
TABLA (despues)**********************
********************************************
nombre valor
----------- --------
work_doc 267
solicitud 318
La funcion deberia recibir el parametro nombre, ubicar aquel valor en la tabla, aumentar en 1 el campo valor de ese registro y luego devolver aquel valor
aumentado. Pero al llamar a la funcion me ejecuta el update para todos los registros, como si no tomara la condicion entregada y fuera de eso me
arroja el siguiente mensaje de error: "PL/pgSQL function "retorna_correlativo_tabla" line 6 at assignment". Alguien me puede explicar el porque de esto.
PD: soy nuevo en Postgres.