Trigger - sql server 2008

SQL Server

16/06/2013

trigger para Simular uma mala direta com um print, caso seja cadastrado em uma certa tabela os avisos para os clientes de um certo médico. algueem?
Bgsouza

Bgsouza

Curtidas 0

Respostas

Joel Rodrigues

Joel Rodrigues

16/06/2013

Poderia detalhar melhor qual é sua dificuldade?
GOSTEI 0
Bgsouza

Bgsouza

16/06/2013

Sei criar uma trigger basica, agr essa dai nao seei nem a logica dela viu cara. se souber me ajuda ae pfv
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

16/06/2013

Beleza, vamos lá.
Explique detalhadamente o que o trigger deve fazer, para sabermos por onde começar.
GOSTEI 0
Bgsouza

Bgsouza

16/06/2013

É um bd de uma clinica médica, onde tem as tebelas (médico, paciente, consulta e aviso), essa tabela aviso tem o crm do medico, o aviso e o cpf do paciente. entao o trigger deve:
-Simular uma mala direta com um print, caso seja cadastrado em uma certa tabela os avisos para os clientes de um certo médico.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

16/06/2013

Quando forem cadastradas consultas, deve avisar ao cliente da consulta? É isso?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

16/06/2013

Perdão, é pra quando cadastrar AVISOS, avisar ao cliente que foi avisado?
GOSTEI 0
Bgsouza

Bgsouza

16/06/2013

pelo que eu entendi eh isso mesmo.
GOSTEI 0
Bgsouza

Bgsouza

16/06/2013

Perdão, é pra quando cadastrar AVISOS, avisar ao cliente que foi avisado?


vaai poder me ajudar joel?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

16/06/2013

Vou tentar, amigo. Farei o possível, mas precisarei pesquisar um pouco sobre a questão de enviar os emails, pois só o trigger é bem fácil.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

16/06/2013

Cara, agora que me toquei. Você não precisa enviar o email, não é? Você quer exibir uma mensagem com PRINT simulando o envio.
É isso?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

16/06/2013

Seria algo assim:
CREATE TRIGER tgr_AVISOS_Insert
AS
BEGIN
	DECLARE
	@CPF		VARCHAR(15),
	@MENSAGEM	VARCHAR(500)
	
	SELECT @CPF = CpfPaciente, @MENSAGEM = Mensagem FROM INSERTED
	
	SET @MENSAGEM = 'Email enviado para o cliente de CPF ' + @CPF + ': '+@MENSAGEM
	
	PRINT @MENSAGEM
END
?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

16/06/2013

Ou você tem o email do paciente em outra tabela e precisa recuperá-lo também? Para que a mensagem seja mais fiel ao envio do email?
GOSTEI 0
Bgsouza

Bgsouza

16/06/2013

Eh isso msm, ate pq, pelo que eu pesquisei aq, nao eh possivel enviar um email atravez do sql, entao teria que ser apenas uma simulação por um print.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

16/06/2013

Foi mal, esqueci de umas coisas no código, pois fiz direto no notepad:
CREATE TRIGER tgr_AVISOS_Insert
ON Avisos
FOR INSERT
AS
BEGIN
	DECLARE
	@CPF		VARCHAR(15),
	@MENSAGEM	VARCHAR(500)
	
	SELECT @CPF = CpfPaciente, @MENSAGEM = Mensagem FROM INSERTED
	
	SET @MENSAGEM = 'Email enviado para o cliente de CPF ' + @CPF + ': '+@MENSAGEM
	
	PRINT @MENSAGEM
END
GOSTEI 0
Bgsouza

Bgsouza

16/06/2013

Isso msm, vlw

SELECT @CPF = CpfPaciente, @MENSAGEM = Mensagem FROM INSERTED

posso fazer um select no lugar de CPFPACIENTE ae pra mostrar o nome dele ne?
(precisa fazer nao, so pra saber msm)

GOSTEI 0
Joel Rodrigues

Joel Rodrigues

16/06/2013

Exato, só que aí você faria um inner join com a tabela de pacientes, para pegar o nome, relacionando com a coluna CpfPaciente da tabela INSERTED.
GOSTEI 0
Bgsouza

Bgsouza

16/06/2013

AS
BEGIN
DECLARE
@CpfPaciente varchar(15),
@CrmMedico varchar(20),
@MENSAGEM VARCHAR(500)

SELECT @CpfPaciente = CpfPaciente, @CrmMedico = CrmMedico, @MENSAGEM = Mensagem FROM INSERTED

SET @MENSAGEM = 'Email enviado para o paciente' + @CpfPaciente + ' do medico ' + @CrmMedico + ' : ' + @MENSAGEM

PRINT @MENSAGEM
END
GOSTEI 0
Bgsouza

Bgsouza

16/06/2013

Alter TRIGGER AVISO_INSERIR
ON Avisos
FOR INSERT
AS
BEGIN
DECLARE
@CpfPaciente varchar(15),
@CrmMedico varchar(20),
@MENSAGEM	VARCHAR(500)

SELECT 
@CpfPaciente = (select p.nome from Paciente as p inner join Avisos as a
on p.CpfPaciente = a.CpfPaciente), 
@CrmMedico = (select m.nome from Medico as m inner join Avisos as a
on m.Crm = a.CrmMedico), 
@MENSAGEM = Mensagem FROM INSERTED

SET @MENSAGEM = 'Email enviado para o(a) cliente (' + @CpfPaciente + ') do medico(a) (' + @CrmMedico + ') : ' + @MENSAGEM

PRINT @MENSAGEM
END



Agr ta pronto. vlw
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

16/06/2013

Show de bola. Que bom que deu certo.
Então estou encerrando o tópico.
Abraço.
GOSTEI 0
Alex Lekao

Alex Lekao

16/06/2013

Ola Boa tarde!!!

Acredito que seja possivel criar um Job para enviar estes e-mails, e colocar para o que o Job rode a cada hora ou algo do tipo, e no script sql teria os condicionais para fosse enviado so daquilo que tive um limite de envio, por exemplo que faltam 4 horas para a consulta ou 1 dia para a consulta etc, etc.

Acho que pode ser interessante algo deste tipo. rsrsr

Abraco.

Alex - Lekao
GOSTEI 0
Cesar Roniglei

Cesar Roniglei

16/06/2013

Bom dia, Aqui na empresa que trabalho desenvolvi uma procedure onde envio os e-mails para nossos beneficiários de plano de saúde.
Hoje é feito envio de boletos, Cobranças, Utilizações dentre outras.
Para isso deverá configurar seu SQL Server para utilizar o DATABASE MAIL, integrando isso a uma procedure, ou trigger como queira.

Irá também passar como Parâmetros o PROFILE_NAME, que irá configurar no seu DATABASE MAIL.

Qualquer dúvida estou a disposição.
GOSTEI 0
Bgsouza

Bgsouza

16/06/2013

Mais no exerc era só pra simular com um print msm, vlw
GOSTEI 0
POSTAR