Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/08/2007, 09:13
brios
 
Fecha de Ingreso: agosto-2007
Mensajes: 2
Antigüedad: 16 años, 9 meses
Puntos: 0
Pregunta Problema sentencias dentro de Function

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.