Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/02/2015, 09:13
greg_dorian
 
Fecha de Ingreso: abril-2009
Mensajes: 36
Antigüedad: 15 años
Puntos: 0
Pregunta creando Trigger fin del procedimiento disparador sin encontrar RETURN

tengo el siguiente codigo trigger en postgres 9.2

Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION sp_incremental () RETURNS TRIGGER AS
  2. $BODY$
  3. DECLARE
  4.     ultimocodigo CHARACTER VARYING(100);
  5.     parteTexto CHARACTER VARYING(100);
  6.     parteNumerica CHARACTER VARYING(100);
  7.     longitudNumerica INT;
  8.     codigoNumerico CHARACTER VARYING(100);
  9.     codigo CHARACTER VARYING(100);
  10. BEGIN
  11.     ultimocodigo := (SELECT MAX(codigousuarioamigo) FROM TUsuarioAmigo);
  12.     IF ultimocodigo IS NULL THEN
  13.         ultimocodigo := 'USUARIOX0000000';
  14.     END IF;
  15.     parteTexto := substr(ultimocodigo, 1, 8);
  16.     parteNumerica := substr(ultimocodigo, 9, 7)|| 1 ;
  17.     longitudNumerica := (SELECT LENGTH(parteNumerica)-6);
  18.     codigoNumerico := concat(repeat('0', longitudNumerica), parteNumerica);
  19.     codigo := concat(parteTexto, codigoNumerico);
  20.     NEW.codigoUsuario := (SELECT codigo);
  21.     EXCEPTION WHEN OTHERS THEN RAISE NOTICE 'SQL ERROR: %', SQLERRM;
  22. END
  23. $BODY$
  24. LANGUAGE plpgsql;
  25.  
  26. CREATE TRIGGER trggBeforeInsertTUsuario
  27. BEFORE INSERT ON TUsuario
  28. FOR EACH ROW
  29.   EXECUTE PROCEDURE sp_incremental();
[/CODE]
pero me sale el siguiente error al insertar una nueva fila

ERROR: la ejecución alcanzó el fin del procedimiento disparador sin encontrar RETURN
CONTEXT: función PL/pgSQL sp_incremental()

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

ERROR: la ejecución alcanzó el fin del procedimiento disparador sin encontrar RETURN
SQL state: 2F005
Context: función PL/pgSQL sp_incremental()


llevo varios dias sin poder identificar que RETURN no se encuentra... vale aclarar que postgres no conozco mucho... de hecho este sp lo copie de MySQL

Última edición por gnzsoloyo; 24/02/2015 a las 09:26