Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

creando Trigger fin del procedimiento disparador sin encontrar RETURN

Estas en el tema de creando Trigger fin del procedimiento disparador sin encontrar RETURN en el foro de PostgreSQL en Foros del Web. tengo el siguiente codigo trigger en postgres 9.2 @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original CREATE OR REPLACE FUNCTION sp_incremental ( ) RETURNS TRIGGER AS $BODY$ ...
  #1 (permalink)  
Antiguo 24/02/2015, 09:13
 
Fecha de Ingreso: abril-2009
Mensajes: 36
Antigüedad: 11 años, 8 meses
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
  #2 (permalink)  
Antiguo 24/02/2015, 13:44
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 11 años, 9 meses
Puntos: 360
Respuesta: creando Trigger fin del procedimiento disparador sin encontrar RETURN

Antes del exception, debes poner

RETURN NEW;
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 11/03/2015, 05:37
 
Fecha de Ingreso: diciembre-2014
Mensajes: 16
Antigüedad: 6 años
Puntos: 1
Respuesta: creando Trigger fin del procedimiento disparador sin encontrar RETURN

Exacto, debes de retornar algún valor para que la ejecución continué su camino.

Etiquetas: postgres, programacion, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:39.