Stored Procedures - Transação e Exists

21/06/2013

0

criar uma Stored Procedure (gerenciada por uma transação) para Alocar uma consulta com um certo médico em um certo horário, deverá ser verificado se não existe choque de horário.


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

Bgsouza

Responder

Posts

30/06/2013

Joel Rodrigues

Para começar, o IF seria mais ou menos assim:
IF NOT EXISTS (SELECT C.horarioConsulta FROM Consultas C WHERE C.horarioConsulta = @HorarioConsulta)
Responder

30/06/2013

Joel Rodrigues

Sobre a transação, o esquema é o seguinte:
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
Responder

30/06/2013

Joel Rodrigues

No caso do seu procedure, seria mais ou menos assim:
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
Responder

09/07/2013

Joel Rodrigues

E aí, conseguiu?
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar