Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/03/2013, 19:10
Avatar de jlct
jlct
 
Fecha de Ingreso: abril-2012
Ubicación: Venezuela
Mensajes: 148
Antigüedad: 12 años, 10 meses
Puntos: 19
Problemas con Trigger

Hola a todos en FDW, tengo un problema con una funcion que llamo en un trigger,
Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION email(valor CHAR(5)) RETURNS RECORD AS
  2. $BODY$
  3. DECLARE
  4. correo RECORD;
  5. BEGIN
  6. SELECT INTO correo tpersona.per_correo para, 'Actividad Administrativa' asunto,
  7. 'Saludos, por medio de la presente se le notifica que hoy ' || to_char(now(),'DD/MM/YYYY') || ' le fue asignado(a) a la actividad ' || quote_literal(act_nombre) || ' en el ambiente ' || amb_nombre cuerpo
  8. FROM tpersona
  9. INNER JOIN tdetalle_actividad_ad ON tpersona.cedula = tdetalle_actividad_ad.cedula
  10. INNER JOIN tactividades_administrativas ON tdetalle_actividad_ad.cod_actividad = tactividades_administrativas.cod_actividad
  11. INNER JOIN tambiente ON tdetalle_actividad_ad.cod_ambiente = tambiente.cod_ambiente WHERE tdetalle_actividad_ad.cod_detalle_actividad = quote_literal($1);
  12. RETURN correo;
  13. END;
  14. $BODY$
  15. LANGUAGE 'plpgsql'
  16.  
  17. CREATE OR REPLACE FUNCTION llamar_email()
  18. RETURNS TRIGGER AS
  19. $BODY$
  20. DECLARE parametro TEXT;
  21. BEGIN
  22. parametro := NEW.cod_detalle_actividad;
  23. EXECUTE email(parametro);
  24. RETURN NEW;
  25. END;
  26. $BODY$
  27. LANGUAGE 'plpgsql'
  28.  
  29. CREATE TRIGGER Enviar_correo AFTER INSERT OR UPDATE ON tdetalle_actividad_ad
  30. FOR EACH ROW
  31. EXECUTE PROCEDURE llamar_email();

En base lo que quiero que haga es luego de insertar un registro, me busque la informacion necesaria para enviar un emal (en el select tengo los datos 'para', 'asunto' y 'cuerpo')

los querys funcionan pero al insertar me envia el siguiente error de sintaxis

Código SQL:
Ver original
  1. ERROR:  syntax error at OR near ","
  2. LINE 1: (,,)
  3.          ^
  4. QUERY:  (,,)
  5. CONTEXT:  PL/pgSQL FUNCTION llamar_email() line 5 at EXECUTE statement

espero me puedan ayudar, gracias!!