Stored Procedures - Transação e Exists
21/06/2013
0
CREATE PROCEDURE ALOCAR_CONSULTA @CrmMedico varchar(20), @CpfPaciente varchar(20), @DataConsulta date, @HorarioConsulta time(7), @ValorConsulta decimal(7,2) AS BEGIN if (@HorarioConsulta <> (select c.horarioConsulta from Consultas as C )) insert into Consultas (CrmMedico, CpfPaciente, DataConsulta, HorarioConsulta, ValorConsulta) values (@CrmMedico, @CpfPaciente, @DataConsulta, @HorarioConsulta, @valorConsulta) else print 'horario existente' END
Só que precisa ser gerenciada por uma transação, que eu nao sei. E ae no if precisa usar a clausula EXISTS ou NOT EXISTS, alguem ajuda ae?
Bgsouza
Posts
30/06/2013
Joel Rodrigues
IF NOT EXISTS (SELECT C.horarioConsulta FROM Consultas C WHERE C.horarioConsulta = @HorarioConsulta)
30/06/2013
Joel Rodrigues
BEGIN TRANSACTION --INSTRUÇÕES COMMMIT --OU ROLLBACK
Então você poderia colocar o COMMIT e o ROLLBACK dentro de estruturas condicionais. Por exemplo:
BEGIN TRANSACTION IF (alguma coisa) COMMIT ELSE ROLLBACK
30/06/2013
Joel Rodrigues
BEGIN TRANSACTION COMMIT ROLLBACK CREATE PROCEDURE ALOCAR_CONSULTA @CrmMedico varchar(20), @CpfPaciente varchar(20), @DataConsulta date, @HorarioConsulta time(7), @ValorConsulta decimal(7,2) AS BEGIN BEGIN TRANSACTION IF NOT EXISTS (SELECT C.horarioConsulta FROM Consultas C WHERE C.horarioConsulta = @HorarioConsulta) BEGIN INSERT INTO Consultas (CrmMedico, CpfPaciente, DataConsulta, HorarioConsulta, ValorConsulta) VALUES (@CrmMedico, @CpfPaciente, @DataConsulta, @HorarioConsulta, @valorConsulta) COMMIT END ELSE BEGIN PRINT 'Horário existente' ROLLBACK END END
Clique aqui para fazer login e interagir na Comunidade :)