Trigger - sql server 2008
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
Curtidas 0
Respostas
Joel Rodrigues
16/06/2013
Poderia detalhar melhor qual é sua dificuldade?
GOSTEI 0
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
16/06/2013
Beleza, vamos lá.
Explique detalhadamente o que o trigger deve fazer, para sabermos por onde começar.
Explique detalhadamente o que o trigger deve fazer, para sabermos por onde começar.
GOSTEI 0
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.
-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
16/06/2013
Quando forem cadastradas consultas, deve avisar ao cliente da consulta? É isso?
GOSTEI 0
Joel Rodrigues
16/06/2013
Perdão, é pra quando cadastrar AVISOS, avisar ao cliente que foi avisado?
GOSTEI 0
Bgsouza
16/06/2013
pelo que eu entendi eh isso mesmo.
GOSTEI 0
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
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
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?
É isso?
GOSTEI 0
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
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
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
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
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)
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
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
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
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
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
16/06/2013
Show de bola. Que bom que deu certo.
Então estou encerrando o tópico.
Abraço.
Então estou encerrando o tópico.
Abraço.
GOSTEI 0
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
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
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.
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
16/06/2013
Mais no exerc era só pra simular com um print msm, vlw
GOSTEI 0