Advertisement
Guest User

Untitled

a guest
Dec 15th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 3.66 KB | None | 0 0
  1. USE [projectofinalatestes2]
  2. GO
  3. /****** Object:  StoredProcedure [dbo].[insert_update_aulas]    Script Date: 15/12/2018 03:33:27 ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. CREATE PROCEDURE [dbo].[insert_aulas]
  9.     @st_date datetime,
  10.     @ed_date datetime,
  11.     @id_turma INT,
  12.     @id_form INT,
  13.     @id_ufcd INT,
  14.     @text VARCHAR(MAX),
  15.     @horas FLOAT,
  16.     @flag INT output
  17. AS
  18. BEGIN
  19. BEGIN TRY
  20. BEGIN TRANSACTION
  21.    IF(EXISTS(SELECT * FROM c_form WHERE id_formador= @id_form AND id_turma=@id_turma AND start_date=@st_date ))
  22.    BEGIN
  23.         SET @flag = -1 --formador já alocado para esta turma, neste bloco
  24.    END
  25.    ELSE IF(EXISTS(SELECT * FROM c_form WHERE id_formador= @id_form AND id_turma!=@id_turma AND start_date=@st_date))
  26.    BEGIN
  27.         SET @flag = -2 --formador já alocado para outra turma, neste bloco
  28.    END
  29.    ELSE IF(EXISTS(SELECT * FROM c_form WHERE id_formador!= @id_form AND id_turma=@id_turma AND start_date=@st_date AND end_date=@ed_date ))
  30.    BEGIN
  31.         SET @flag = -3 --outro formador já alocado para esta turma, neste bloco
  32.    END
  33.    ELSE IF(EXISTS(SELECT * FROM c_form WHERE  id_turma=@id_turma AND start_date=@st_date AND end_date!=@ed_date ))
  34.    BEGIN
  35.         DECLARE @tempStart datetime = (SELECT end_date FROM c_form WHERE id_turma=@id_turma AND start_date=@st_date AND end_date!=@ed_date)
  36.         DECLARE @HORAS_TESTE FLOAT
  37.         SET @HORAS_TESTE =(SELECT CAST(DATEDIFF(SECOND ,@tempStart, @ed_date) AS FLOAT))
  38.         SET @HORAS_TESTE = @HORAS_TESTE/3600.0
  39.         INSERT INTO c_form (start_date, end_date, id_formador, id_turma, id_ufcd, text ) VALUES (@tempStart, @ed_date, @id_form, @id_turma, @id_ufcd, @text)
  40.         UPDATE turma_ufcd SET horas_lecionadas+= @HORAS_TESTE WHERE id_turma = @id_turma AND id_ufcd = @id_ufcd
  41.         SET @flag = 1 --Inserido, mas já existia UFCD na hora anterior, adicionado com horas reduzidas
  42.    END
  43.    ELSE IF(EXISTS(SELECT * FROM c_form WHERE  id_turma=@id_turma AND start_date=@st_date AND end_date!=@ed_date ))
  44.    BEGIN
  45.         DECLARE @tempEnd datetime = (SELECT start_date FROM c_form WHERE id_turma=@id_turma AND start_date=@st_date AND end_date!=@ed_date)
  46.         DECLARE @HORASEND_TESTE FLOAT
  47.         SET @HORASEND_TESTE =(SELECT CAST(DATEDIFF(SECOND ,@st_date, @tempEnd) AS FLOAT))
  48.         SET @HORASEND_TESTE = @HORAS_TESTE/3600.0
  49.         INSERT INTO c_form (start_date, end_date, id_formador, id_turma, id_ufcd, text ) VALUES (@st_date, @tempEnd, @id_form, @id_turma, @id_ufcd, @text)
  50.         UPDATE turma_ufcd SET horas_lecionadas+= @HORASEND_TESTE WHERE id_turma = @id_turma AND id_ufcd = @id_ufcd
  51.         SET @flag = 2 --Inserido, mas já existia UFCD na hora seguinte, adicionado com horas reduzidas
  52.    END
  53.    ELSE IF(SELECT n_horas FROM ufcd WHERE id = @id_ufcd) < ((SELECT horas_lecionadas FROM turma_ufcd WHERE id_turma = @id_turma AND id_ufcd = @id_ufcd) +@horas)
  54.    BEGIN
  55.         SET @horas = (SELECT horas_lecionadas FROM turma_ufcd WHERE id_turma = @id_turma AND id_ufcd = @id_ufcd)+@horas-(SELECT n_horas FROM ufcd WHERE id = @id_ufcd)
  56.         INSERT INTO c_form (start_date, end_date , id_formador, id_turma, id_ufcd, text ) VALUES (@st_date, DATEDIFF(HOUR, @horas, @ed_date), @id_form, @id_turma, @id_ufcd, @text)
  57.         UPDATE turma_ufcd SET horas_lecionadas+= @horas WHERE id_turma = @id_turma AND id_ufcd = @id_ufcd
  58.         SET @flag = 3 --Inserido, fim de UFCD, horas reduzidas
  59.    END
  60.    ELSE
  61.    BEGIN
  62.         INSERT INTO c_form (start_date, end_date , id_formador, id_turma, id_ufcd, text ) VALUES (@st_date, @ed_date, @id_form, @id_turma, @id_ufcd, @text)
  63.         UPDATE turma_ufcd SET horas_lecionadas+= @horas WHERE id_turma = @id_turma AND id_ufcd = @id_ufcd
  64.         SET @flag = 4 -- Insert normal
  65.    END
  66.  commit
  67. END TRY
  68. BEGIN CATCH
  69. IF @@TRANCOUNT > 0
  70.         BEGIN        
  71.             ROLLBACK
  72.            
  73.         END
  74. END CATCH
  75. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement