You are on page 1of 4

Banco de Dados II

Lista 2 – Conceitos básicos e sintaxe PL/SQL

1. Implemente o Algoritmo de Euclides em um bloco PL/SQL:

variáveis
divisor: inteiro
dividendo: inteiro
c: inteiro
início
dividendo ← a
divisor ← b
enquanto resto(dividendo/divisor) ≠ 0
início
c ← resto(dividendo/divisor)
dividendo ← divisor
divisor ← c
fim-enquanto
fim-algoritmo

declare

divisor number:=:a;

dividendo number:=:b;

c number;

begin

while(divisor mod dividendo) <> 0 loop

c :=(divisor mod dividendo);

dividendo:=divisor;

divisor:=c;

end loop;

dbms_output.put_line(divisor);

end;

1
2. Implemente o algoritmo para cálculo de fatorial em um bloco PL/SQL:

leia nf
fat ← 1
para i variando de 1 a n faça
fat ← fat*i
apresente fat

declare

num number:=:nf;
fat number:=1;

begin

for i IN REVERSE 1..num loop

fat:=fat*i;

end loop;

dbms_output.put_line(fat);

end;

2
3. Escrever uma rotina PL/SQL que, com base no valor da variável A,
realize as seguintes operações:

- Se A < 10 inserir o valor de A na tabela T1;

- Se A >= 10 e A < 20 inserir o valor de A na tabela T2;

- Caso contrário inserir o valor de A na tabela T3.

Observação: Criar a tabela T1 um campo numérico chamado valor.

create table t1(valor int)

create table t2(valor int)

create table t3(valor int)

declare

num number :=:a;

begin

if num<10 then

insert into t1(valor) values (num);

elsif ((num >=10) and (num<20)) then

insert into t2(valor) values (num);

else

insert into t3(valor) values (num);

end if;

end;

select * from t1 / select * from t2 / select * from t3

3
4. Elaborar um algoritmo PL/SQL que insira na tabela T1 os números pares
menores que 100.

Observação: A tabela T1 possui apenas um campo numérico chamado valor.

begin

for i IN 1..100 loop

if (i mod 2)= 0 then

insert into t1(valor) values (i);

end if;

end loop;

end;

5. Faça um bloco PL/SQL que realize uma consulta na tabela LIVRO para encontrar o
livro mais caro e o mais barato. Ao final da execução deverá ser gerada a mensagem:
“O livro mais caro é o _______. O livro mais barato é o ________. E a diferença de
valores entre eles é ________”

max livros.preco%TYPE;

min livros.preco%TYPE;

timax livros.titulo%TYPE;

timin livros.titulo%TYPE;

begin

select max(preco),min(preco) into max,min from livros;

select titulo into timin from livros where preco = min;

select titulo into timax from livros where preco = max;

dbms_output.put_line('O livro mais caro é o '||timax||'. O livro mais barato é o '|| timin ||'. E a
diferença de valores entre eles é: '||(max-min));

end;

You might also like