Você está na página 1de 7

Centro Universitário UNIFACISA

CESED – Centro de Ensino Superior e Desenvolvimento

Sistemas de Informação

Período: 2022.2

Docente: Herriot Fernandes

Disciplina: Banco de Dados II

Discente: Maria Geovana Gonçalo de Oliveira

Lista 7 – Transações

1. BEGIN TRANSACTION;

DECLARE Qtd INT;

DECLARE Indice INT;

SELECT COUNT(*)

INTO Qtd

FROM SerHumano;

SELECT COUNT(*)

INTO Indice

FROM Recados;
INSERT INTO Recados

VALUES (Indice + 1, ‘A universidade possui ’ + Qtd + ‘ pessoas.’;

COMMIT;

2. BEGIN TRANSACTOR;

DECLARE Indice INT;

DECLARE QtdProf INT;

DECLARE QtdAlu INT;

DECLARE Qtd INT;

SELECT COUNT(*)

INTO Indice

FROM Recados;

SELECT COUNT(*)

INTO Qtd

FROM SerHumano;

SELECT COUNT(*)

INTO QtdProf

FROM Professor;

SELECT COUNT(*)

INTO QtdAlu

FROM Aluno;
INSERT INTO Recados

VALUES (Indice + 1, ‘A universidade possui ’ + Qtd + ‘ pessoas, das


quais ’ + QtdProf + ‘ são professores e ’ + QtdAlu + ‘ são alunos’);

/*Não tive criatividade para inventar uma pessoa*/

INSERT INTO SerHumano

VALUES (Matricula**, Nome**, Endereco**);

SELECT COUNT(*)

INTO Qtd

FROM SerHumano;

INSERT INTO Recados

VALUES (Indice + 1, ‘A universidade possui ’ + Qtd + ‘ pessoas, das


quais ’ + QtdProf + ‘ são professores e ’ + QtdAlu + ‘ são alunos’);

COMMIT;

3. CREATE PROCEDURE Questao3(OUT Mensagem VARCHAR(100))

DECLARE QtdDiscPro INT;

DECLARE QtdDiscAlu INT;

DECLARE QtdWhile INT;

DECLARE MatProfessora INT;

BEGIN

SELECT COUNT(*)
INTO QtdDiscPro

FROM Disciplina d, SerHumano sh, Ensina e

WHERE e.DisCod = d.Codigo

AND e.MatProf = sh.Matricula

AND sh.Nome = ‘Walkellyaneide’;

SELECT COUNT(*)

INTO QtdDiscAlu

FROM Disciplina d, Matriculado m, SerHumano sh, Ensina e

WHERE m.CodDisc = d.Codigo

AND m.AluMat = sh.Matricula

AND e.DisCod = d.Codigo

AND sh.Nome = ‘Robertodilon’

AND e.Periodo = ‘2010.1’;

SELECT p.MatProf

INTO MatProfessora

FROM Professor p, SerHumano sh

WHERE p.MatProf = sh.Matricula

AND sh.Nome = ‘Walkellyaneide’;

IF QtdDiscPro < QtdDiscAlu THEN

BEGIN

SET QtdWhile = 0;

WHILE QtdWhile < QtdDiscPro DO


UPDATE Professor p

SET p.Salario = p.Salario * 1.01

WHERE p.MatProf = MatProfessora;

SET QtdWhile = QtdWhile + 1;

END WHILE;

SET Mensagem = ‘Aumento confirmado’;

COMMIT;

END;

ELSE

BEGIN

SET QtdWhile = 0;

WHILE QtdWhile < QtdDiscPro DO

UPDATE Professor p

SET p.Salario = p.Salario * 1.01

WHERE p.MatProf = MatProfessora;

SET QtdWhile = QtdWhile + 1;

END WHILE;

SET Mensagem = ‘Aumento não realizado, quantidade de


disciplinas da professora Walkellyaneide ultrapassam a
quantidade de disciplinas de ‘Robertodilon”;

ROLLBACK;

END;

END IF;

END;
4. CREATE PROCEDURE Questao4(IdA INT, IdB INT)

DECLARE SomaA INT;

DECLARE SomaB INT;

BEGIN

SELECT SUM(p.Salario)

INTO SomaA

FROM Professor p

WHERE p.CursoId = IdA;

SELECT SUM(p.Salario)

INTO SomaB

FROM Professor p

WHERE p.CursoId = IdB;

IF SomaA < SomaB THEN

BEGIN

WHILE SomaA < SomaB DO

UPDATE Professor p

SET p.Salario = p.Salario * 1.02

WHERE p.CursoId = IdA;

UPDATE Professor p

SET p.Salario = p.Salario * 1.01

WHERE p.CursoId = IdB;


END WHILE;

END;

ELSE

BEGIN

WHILE SomaB < SomaA DO

UPDATE Professor p

SET p.Salario = p.Salario * 1.02

WHERE p.CursoId = IdB;

UPDATE Professor p

SET p.Salario = p.Salario * 1.01

WHERE p.CursoId = IdA;

END WHILE;

END;

END IF;

END;

Você também pode gostar