Você está na página 1de 3

SEGUNDO EXERCÍCIO AVALIADO

DISCIPLINA: Linguagem de programação para banco de dados Oracle


NOME: N.º: TURMA:
PROF: Aloísio de Meneses Maciel TURNO: Noite VALOR: 20,0
DATA: 26/06/10 NOTA:

Orientações gerais:

• O trabalho é individual.
• Caso dois trabalhos sejam exatamente iguais, a nota atribuída será dividida
por dois.
• A entrega do trabalho deverá ser feita durante a aula.
• Em hipótese alguma será aceito trabalho fora do prazo.

CREATE TABLE cursos (


codigocurso NUMBER(3),
nomecurso VARCHAR2(30),
CONSTRAINT pk_curso PRIMARY KEY (codigocurso) );

CREATE TABLE alunos (


codigoaluno NUMBER(5),
nome VARCHAR2(60),
codigocurso NUMBER(3),
creditos NUMBER(3),
CONSTRAINT pk_alunos PRIMARY KEY (codigoaluno) );

CREATE TABLE departamento (


codigodepartamento NUMBER(2),
nomedepartamento VARCHAR2(30),
CONSTRAINT pk_departamento PRIMARY KEY (codigodepartamento) );

CREATE TABLE estatistica_curso (


codigocurso VARCHAR2(30),
total_creditos NUMBER,
total_estudantes NUMBER);
CREATE TABLE matricula (
codigoaluno NUMBER(5),
codigodepartamento NUMBER(2),
codigocurso NUMBER(3),
nota CHAR(1),
CONSTRAINT pk_matricula PRIMARY KEY
(codigoaluno, codigodepartamento, codigocurso) );

CREATE TABLE logaluno (


codigoaluno NUMBER(5),
datamodificacao date,
nomeanterior VARCHAR2(60),
nomeatual VARCHAR2(60),
creditoanterior NUMBER(3),
creditoatual NUMBER(3),
CONSTRAINT pk_logaluno PRIMARY KEY
(codigoaluno, datamodificacao) );

CREATE TABLE auditoria_matricula (


tipo_mudanca CHAR(1) NOT NULL,
mudado_por VARCHAR2(8) NOT NULL,
timestamp DATE NOT NULL,
codigo_aluno_anterior NUMBER(5),
departamento_anterior CHAR(3),
curso_anterior NUMBER(3),
nota_anterior CHAR(1),
codigo_aluno_atual NUMBER(5),
departamento_atual CHAR(3),
curso_atual NUMBER(3),
nota_atual CHAR(1)
);

As questões abaixo são baseadas nas definições de tabelas descritas acima.

1. Fazer um bloco PL/SQL, utilizando cursores, para atualizar as estatísticas dos


cursos, sendo a coluna total_credito a soma dos créditos dos alunos e a coluna
total_estudantes a quantidade de alunos de cada curso.

2. Fazer uma função que retorna a quantidade de alunos de um determinado


curso. O nome do curso deverá ser passado como parâmetro. Em seguida,
escreva um comando para fazer uma chamada à função criada.
3. Escrever um trigger de banco de dados para registrar todas as alterações
efetuadas na tabela matricula. As alterações deverão ser registradas na tabela
auditoria_matricula. Considere que a coluna tipo_mudanca seja "I" para
inclusão, "A" para atualização e "E" para exclusão. A data e hora da mudança
deverá ser guardada na coluna data_mudanca através da função SYSDATE e o
nome do usuário que está fazendo a mudança deverá ser guardado na coluna
mudado_por através da função USER.

4. Fazer um procedimento armazenado chamado inserealuno para inserir os


dados de alunos, que serão passados por parâmetros. Se o aluno já existir, os
dados informados deverão se atualizados na tabela de alunos.

5. Fazer um bloco PL/SQL, utilizando cursores, para listar os nomes dos alunos
e o nome dos cursos para todos os alunos do departamento de “FISICA” .

6. Fazer uma função que retorna a quantidade de matriculas realizadas para


um determinado departamento. O nome do departamento deverá ser passado
como parâmetro. Em seguida, escreva um comando para fazer uma chamada à
função criada.

7. Fazer um procedimento armazenado chamado realizamatricula para inserir os


dados de matriculas de alunos, que serão passados por parâmetros. Os
parâmetros passados deverão ser: nome do aluno, nome do departamento,
nome do curso. A nota não deverá ser informada neste procedimento.

Você também pode gostar