Trigger y correo electrónico

Cristi?Q
07 de Diciembre del 2004
Hola,
el problema que tengo es el siguiente.
Tengo una tabla que me indica el stock de productos en venta (tiene los campos de cantidad mínima y cantidad actual). Lo que necesito es que de alguna forma cuando el stock sea menor que el mínimo, me envíe un correo electrónico indicando del hecho.

No sé como realizar esto, pero me dijeron que posiblemente podía hacerlo desde un trigger.
Por favor, si alguien me pudiera ayudar y/o orientar se los agradecería enormemente.

De antemano gracias.

set
07 de Diciembre del 2004
Existen diferentes funciones en oracle para el envio de correos.

en otro foro habían enviado este ejemplo

En BBDD es el paquete UTL_SMTP
Un ejemplo de enviar textos es el siguiente.

procedure send_mail_p
(p_destino varchar2
, p_origen varchar2
, p_texto varchar2) is
SendorAddress Varchar2(30) := nvl(p_origen,'[email protected]');
ReceiverAddress varchar2(30) :=nvl(p_destino,'[email protected]');
EmailServer varchar2(30) := '[email protected]';/* Servidor SMTP
para enviar Mails*/
Port number := 25;
conn UTL_SMTP.CONNECTION;
crlf VARCHAR2( 2 ):= CHR( 13 ) || CHR( 10 );
mesg VARCHAR2( 4000 );
mesg_body varchar2(4000);
BEGIN
conn:= utl_smtp.open_connection( EmailServer, Port );
utl_smtp.helo( conn, EmailServer );
utl_smtp.mail( conn, SendorAddress);
utl_smtp.rcpt( conn, ReceiverAddress );
mesg:=
'Date: '||TO_CHAR( SYSDATE, 'dd Mon yy hh24:mi:ss' )|| crlf ||
'From:'||SendorAddress|| crlf ||
'Subject: Mail Through ORACLE Database' || crlf ||
'To: '||ReceiverAddress || crlf ||
'' || crlf ||p_texto;
utl_smtp.data( conn, mesg );
utl_smtp.quit( conn );
END;


y para ejecutrlo pueeds hacerlo con un timer o con la validación de la acción, cuando el saldo es menor,

Slds

Rodolfo Daniel Reyes
07 de Diciembre del 2004
Te envio un ejemplo de un trigger:


create or replace trigger nombre_trigger
before update on nombre_tabla
REFERENCING OLD AS O NEW AS N
for each row
declare
-- aqui declaras variables si lo necesitas
begin
--Verificas que el nuevo saldo sea menor o igual al minimo
if :n.actual <= :n.minimo then
--haces la llamada al procedimiento almacenado que envio el correo
end if
end nombre_trigger;
/


Ahora para crear un procedimiento almacenado que envie correos, puedes entrar al siguiente link:

http://www.oracle.com/technology/sample_code/tech/pl_sql/htdocs/Utl_Smtp_Sample.html

Ahi hay varias ejemplos de procedimientos almacenados para envio de email.