Você está na página 1de 2

Laboratório de Banco de Dados

1) Verificar a linguagem procedural do PostgreSQL (PLPG/SQL) e identificar e explicar a


comunicação com a linguagem SQL.

PLPGSQL é uma PL/SQL significa "Procedural Language extensions to SQL", que pode ser usado
em bancos de dados. O PL/SQL é a linguagem SQL com construções de programação similares
a outras liguagens.

2) Vantagem e desvantagem do uso da PLPG/SQL.

Vantagens:

 Suporte a módulos de linguagem;


 Cursores;
 Estrutura de Seleção;
 Estrutura de Loop;
 Combinação com SQL declarativo;
 Combinação com transações;
 Tratamento de exceções;
 Suporte a escopo de variáveis;
 Suporte aos tipos primitivos, complexos e domínios ( definidos pelo usuário).

Desvantagens:

 A desvantagem é que erros em uma determinada expressão ou comando


podem não ser detectados até que a parte da função onde se encontram seja
executada.

3) Identificar em seu projeto o que pode ser implementado em PLSG/SQL. Trazer


implementação de gatilhos e procedimentos
4) Seminário:
- Instalação e conexão – 4/11 – G1 (Larisa, Wellington, Matheus)
- Projeto físico e recuperação – 11/11 – G2 (Fellipe, Paulo)
- procedimento de consultas – 18/11
- Indexações – 25/11
- NOSQL – 2/12
Eventos
QUEM → Inserção/Alteração/Exclusão
ONDE → Tabelas
QUANDO → Antes/Depois
O QUE → Função

CREATE TRIGGER nome [BEFORE ou AFTER] \INSERT e/ou DELETE e/ou UPDATE] ON
nome_tabela FOR [EACH ROW STATEMENT]

EXECUTE PROCEDURE nome_função

1) Apresentar o uso de cursores(com exemplos) pelo SGBD: Oracle, Firebird e SQL Server.
2) Apresentar as varias sintaxes de uso de cursor no PostgreSQL

Fazer uma função que percorre a tabela cliente e mostra o nome e a faixa etária. A faixa etária
possui a seguinte regra:
00 < idade ≤ 010 → Criança
10 < idade ≤ 020 → Adolescente
20 < idade ≤ 050 → Adulto
50 < idade ≤ 150 → Idoso
Quando alterar não deixar alterar em mais de um ano de diferença e não deixar diminuir
idade. Mostre uma mensagem para cada caso. Não deixar inserir idade negativa ou maior que
150 anos.

SELECT Nome SELECT Nome


INTO aux_nome INTO aux_cod, aux_nome, aux_idade
FROM Cliente FROM Cliente

DECLARE meu cursor FOR SELECT * FROM Cliente


Minha_var (Cliente.%rowtype | Record);
Aux_nome (Cliente.nome% type);
FETCH meu_cursor INTO minha_var;

CREATE TRIGGER Altera_idade BEFORE UPDATE ON Cliente FOR EACH ROW EXECUTE
altera_idade_func;
CREATE FUNCTION altera_idade Func()
RETURN TRIGGER AS $$
BEGIN
IF (NEW.idade – OLD.idade != 1) THEN
RAISE EXCEPTION(“A idade não pode ser alterada”);
END IF
RETURN NEW;
END
CREATE FUNCTION insere_idade_func () RETURN TRIGGER AS $$
BEGIN
IF (NEW.idade > 150) Then
RAISE EXCEPTION (“Idade superior a permitida”);
END IF
END
CREATE TRIGGER insere_idade BEFORE INSERT ON Cliente FOR EACH ROW EXECUTE
insere_idade_func;

Você também pode gostar