Vous êtes sur la page 1sur 3

NOTA

NP1
Disciplina: Linguagem de Programao de Banco de Dados Curso: Cincia da Computao Aluno(a): Assinatura: Avisos importantes: No permitido o uso de corretivo. Utilize somente caneta azul ou preta A avaliao sem consulta. As correes de questes resolvidas com lpis no podem ser contestadas. Leia as questes com bastante ateno, atendendo ao que se pede. A interpretao faz parte da prova. Ser exigida a resposta completa e que possa ser executada no PostgreSQL. Prof.: Cristiano Schwening Data: / /2013

1. Crie uma funo que facilite a incluso de colaboradores. A funo deve receber como parmetro os campos: nome, data de nascimento e numero do departamento ao qual pertence o colaborador. 2. Crie uma funo que facilite o gerenciamento da tabela de departamento. A funo deve receber como parmetro os campos: nome e gerente, alm da definio de qual tipo de operao que ser realizada (Incluso, Remoo ou Alterao). 3. Crie uma funo que receba como parmetro o nmero de um departamento e retorne o total de horas trabalhadas pelo seu gerente. 4. Com base nas informaes a seguir:
CREATE TABLE genero (id numeric(5)NOT NULL, nome varchar(100), CONSTRAINT genero_pk PRIMARY KEY (id) ); CREATE TABLE filme ( id numeric(5) NOT NULL, nome varchar(100), duracao varchar(100), sinopse varchar(2000), genero numeric(5), data_distribuicao timestamp, CONSTRAINT pk_genero PRIMARY KEY (id), CONSTRAINT fk_genero_filme FOREIGN KEY (genero) REFERENCES genero (id)); insert insert insert insert insert insert insert insert insert into into into into into into into into into genero genero genero genero genero filme filme filme filme values values values values values values values values values (1,'drama'); (2,'comedia'); (3,'terror'); (4,'romance'); (5,'suspense'); (1,'4 segredos','90 min','bla bla bla',5,'2006/08/01'); (2,'O medo','120 min','nono nono no',2,'2001/03/01'); (3,O berro','100 min','bla bla no',2,'2005/10/01'); (4,'O Pianista','90 min','no bla no',1,'2005/06/12');

a) b) c) d) e)

Criar uma funo para retornar o nmero do gnero passando o nome dele. Criar uma funo para fazer o insert na tabela de gneros. Fazer um insert na tabela gneros utilizando a funo criada. Criar uma funo para deletar um gnero da tabela passando o id. Chamar a funo do item d passando o nome como parmetro.

5. Com base nas tabelas filme e gnero, da questo 4. A) criar uma funo que liste os filmes por gnero e B) criar uma funo que atualize a sinopse ou durao ou data_distribuio, conforme opo desejada.

Resposta 1 CREATE OR REPLACE FUNCTION cad_funcionario(nome varchar(40), data_nasc date, departamento int, salario float) returns void as $$ BEGIN insert into funcionario(num_departamento, nome, data_nasc, salario) values(departamento, nome, data_nasc, salario); END; $$ LANGUAGE plpgsql; Resposta 2 CREATE OR REPLACE FUNCTION cad_departamento(nome varchar(40), gerente int) returns void as $$ BEGIN insert into departamento(nome, cod_gerente) values(nome, gerente); END; $$ LANGUAGE plpgsql; Resposta 3 CREATE OR REPLACE FUNCTION horas_gerente(num_departamento int) returns interval as $$ DECLARE rs1 RECORD; rs2 RECORD; total_horas interval; BEGIN select into rs1 cod_gerente from departamento where cod_departamento = num_departamento; total_horas:='00:00:00'; for rs2 in select * from participa where cod_funcionario = rs1.cod_gerente loop total_horas = total_horas + rs2.horas_trabalho; end loop; RETURN total_horas; END; $$ LANGUAGE plpgsql; Resposta 4 --1.Criar uma funo para retornar o nmero do gnero passando o nome dele. CREATE FUNCTION numero_genero(varchar) RETURNS numeric AS ' SELECT id FROM genero WHERE nome=$1; ' LANGUAGE 'SQL'; select * from numero_genero('terror'); --2.Criar uma funo para fazer o insert na tabela de gneros. CREATE FUNCTION insere_genero(numeric,varchar) RETURNS void AS ' INSERT INTO genero VALUES ($1,$2); ' LANGUAGE 'SQL'; --3.Fazer um insert na tabela gneros utilizando a funo criada. select insere_genero(6,'policial'); --5.Criar uma funo para deletar um gnero da tabela passando o id. Pgina 2 de 3

CREATE FUNCTION deleta_genero(numeric) RETURNS void AS ' DELETE FROM genero WHERE id=$1; ' LANGUAGE 'SQL'; --6.Chamar a funo do item 5 passando o nome como parmetro. select deleta_genero(numero_genero('romance')); Resposta 5

Pgina 3 de 3

Vous aimerez peut-être aussi