Trigger y correo electr贸nico
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.
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.
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
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
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.
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.
