PostgreSQL - trigger en postgres con err

   
Vista:

trigger en postgres con err

Publicado por ger. (1 intervención) el 24/02/2015 16:05:25
tengo el siguiente codigo trigger en postgres 9.2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
CREATE 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();

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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

trigger en postgres con err

Publicado por Ramiro (4 intervenciones) el 24/02/2015 19:11:23
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
CREATE 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);
	  RETURN NEW;
	  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();
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar