tengo el siguiente codigo trigger en postgres 9.2
Código SQL:
Ver originalCREATE OR REPLACE FUNCTION sp_incremental () RETURNS TRIGGER AS
$BODY$
DECLARE
ultimocodigo CHARACTER VARYING(100);
parteTexto CHARACTER VARYING(100);
parteNumerica CHARACTER VARYING(100);
longitudNumerica INT;
codigoNumerico CHARACTER VARYING(100);
codigo CHARACTER VARYING(100);
BEGIN
ultimocodigo := (SELECT MAX(codigousuarioamigo) FROM TUsuarioAmigo);
IF ultimocodigo IS NULL THEN
ultimocodigo := 'USUARIOX0000000';
END IF;
parteTexto := substr(ultimocodigo, 1, 8);
parteNumerica := substr(ultimocodigo, 9, 7)|| 1 ;
longitudNumerica := (SELECT LENGTH(parteNumerica)-6);
codigoNumerico := concat(repeat('0', longitudNumerica), parteNumerica);
codigo := concat(parteTexto, codigoNumerico);
NEW.codigoUsuario := (SELECT codigo);
EXCEPTION WHEN OTHERS THEN RAISE NOTICE 'SQL ERROR: %', SQLERRM;
END
$BODY$
LANGUAGE plpgsql;
CREATE TRIGGER trggBeforeInsertTUsuario
BEFORE INSERT ON TUsuario
FOR EACH ROW
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