Logo Passei Direto
Buscar
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Campus: 
RECREIO 
Prova Impressa em 01/05/2020 por 
RICARDO MENARTOWICZ 
Prova Montada em 01/05/2020 
 
1 
Nome: CAIO ADLER GUEDES SACRAMENTO Matrícula: 201708265538 
Disciplina: CCT0675 / LINGUAGEM PROCEDURAL PARA BANCO DE DADOS Data: / / 
Período: 2020.1 / AV1 – 1a PARTE Turma: 3012 
 
OBSERVAÇÕES: 
 
Leia com atenção as questões antes de responder. Todas as respostas devem ser preenchidas em um arquivo e enviadas via SAVA até o dia 12/05. 
A prova deve ser feita de forma individual e somente pelo próprio aluno. Todas as questões são discursivas. 
Caso não haja a entrega no prazo estipulado a nota atribuída ao aluno para esta avaliação será 0 (zero). 
Boa prova. 
 
 
 
 
 
 
 
 
 
 
 
Utilize nas questões o seguinte modelo de dados: 
 
A 
Campus: 
RECREIO 
Prova Impressa em 01/05/2020 por 
RICARDO MENARTOWICZ 
Prova Montada em 01/05/2020 
 
 
 
 
 
 
 
 
 
 
A 
Campus: 
RECREIO 
Prova Impressa em 01/05/2020 por 
RICARDO MENARTOWICZ 
Prova Montada em 01/05/2020 
 
 de 1,25 1 
 de 1,25 2 
 de 1,25 3 
 de 1,25 4 
 
 
 
 
 
Escreva um bloco anônimo para identificar quais produtos não possuem estoque suficiente para atender a todas as 
vendas que estão cadastradas. 
O bloco anônimo deverá imprimir na tela o código do produto (em ordem crescente), o nome do produto e a 
quantidade que falta no estoque para atender as vendas deste produto. 
 
 
 
 
 
 
Escreva um procedimento para calcular o valor de comissão que cada vendedor terá com base em suas vendas que 
estão cadastradas e em seu percentual de comissão (tabela VENDEDOR, campo COMISSAO). O resultado deverá 
ser gravado na tabela VENDEDOR, campo VALOR. 
 
 
 
 
 
 
Escreva uma função que receba como parâmetro o código de um cliente e o código de um produto e retorne a 
quantidade total que o cliente adquiriu daquele produto nas diversas vendas. 
 
 
 
 
 
 
Escreva um trigger que verifique, durante o cadastro/alteração de uma venda, o seguinte: 
 
1) O campo QUANTIDADE da tabela ITEMPRODUTO não pode ter casas decimais e deve ser maior ou igual a 1; 
2) O campo VALOR da tabela ITEMPRODUTO deve ser maior que 0. 
 
Quando as condições acima não forem atendidas, a transação deverá ser cancelada e uma das seguintes mensagens 
de erro deverá ser exibida, respectivamente: 
 
1) “A quantidade do produto não pode ser fracionada e deve ser maior ou igual a 1”; 
2) “O valor do produto deve ser maior que 0”. 
A 
Campus: 
RECREIO 
Prova Impressa em 01/05/2020 por 
RICARDO MENARTOWICZ 
Prova Montada em 01/05/2020 
 
1) 
 
DECLARE 
 VAR_NOME PRODUTO.NOME%TYPE; 
 VAR_ESTOQUE PRODUTO.ESTOQUE%TYPE; 
BEGIN 
 FOR PRODUTO IN ( 
 SELECT 
 CODPRODUTO, 
 SUM(QUANTIDADE) TOTAL 
 FROM ITEMVENDA 
 GROUP BY CODPRODUTO 
 ORDER BY CODPRODUTO 
 ) 
 LOOP 
 SELECT 
 NOME, 
 ESTOQUE 
 INTO 
 VAR_NOME, 
 VAR_ESTOQUE 
 FROM PRODUTO 
 WHERE CODPRODUTO = PRODUTO.CODPRODUTO; 
 
 IF VAR_ESTOQUE < PRODUTO.TOTAL THEN 
 DBMS_OUTPUT.PUT_LINE ('PRODUTO: '||PRODUTO.CODPRODUTO||'. 
'||VAR_NOME||' | '||(VAR_ESTOQUE - PRODUTO.TOTAL)); 
 END IF; 
 END LOOP; 
END; 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Campus: 
RECREIO 
Prova Impressa em 01/05/2020 por 
RICARDO MENARTOWICZ 
Prova Montada em 01/05/2020 
 
2) 
 
CREATE OR REPLACE PROCEDURE CALCULAR_COMISSAO 
IS 
 VAR_RESULTADO NUMBER; 
 VAR_COMISSAO VENDEDOR.COMISSAO%TYPE; 
 VAR_VENDA VENDA.VALORTOTAL%TYPE; 
BEGIN 
 FOR VAR_VENDEDOR IN ( 
 SELECT 
 CODVENDEDOR 
 FROM VENDEDOR 
 ORDER BY CODVENDEDOR ASC 
 ) 
 LOOP 
 SELECT 
 COMISSAO 
 INTO 
 VAR_COMISSAO 
 FROM VENDEDOR 
 WHERE CODVENDEDOR = VAR_VENDEDOR.CODVENDEDOR; 
 
 SELECT 
 SUM(VALORTOTAL) 
 INTO 
 VAR_VENDA 
 FROM VENDA 
 WHERE CODVENDEDOR = VAR_VENDEDOR.CODVENDEDOR 
 GROUP BY VAR_VENDEDOR.CODVENDEDOR; 
 
 VAR_RESULTADO := (VAR_VENDA * (VAR_COMISSAO/100)); 
 
 UPDATE VENDEDOR 
 SET VALOR = VAR_RESULTADO 
 WHERE VAR_VENDEDOR.CODVENDEDOR = CODVENDEDOR; 
 END LOOP; 
END; 
 
 
 
 
 
 
 
 
 
 
 
 
Campus: 
RECREIO 
Prova Impressa em 01/05/2020 por 
RICARDO MENARTOWICZ 
Prova Montada em 01/05/2020 
 
3) 
 
CREATE OR REPLACE FUNCTION PEGAR_TOTAL 
 (P_CODCLIENTE IN VENDA.CODCLIENTE%TYPE, P_CODPRODUTO IN 
ITEMVENDA.CODPRODUTO%TYPE) 
 RETURN ITEMVENDA.QUANTIDADE%TYPE 
IS 
 V_QUANTIDADE ITEMVENDA.QUANTIDADE%TYPE; 
BEGIN 
 SELECT 
 SUM(QUANTIDADE) 
 INTO 
 V_QUANTIDADE 
 FROM VENDA, ITEMVENDA 
 WHERE VENDA.CODVENDA = ITEMVENDA.CODVENDA 
 AND CODCLIENTE = P_CODCLIENTE 
 AND CODPRODUTO = P_CODPRODUTO; 
 RETURN V_QUANTIDADE; 
END; 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Campus: 
RECREIO 
Prova Impressa em 01/05/2020 por 
RICARDO MENARTOWICZ 
Prova Montada em 01/05/2020 
 
4) 
 
CREATE OR REPLACE TRIGGER VALIDAR_CADASTRO 
 BEFORE INSERT OR UPDATE OF QUANTIDADE 
 ON ITEMVENDA 
 FOR EACH ROW 
BEGIN 
 IF :NEW.QUANTIDADE <= 1 OR TRUNC(:NEW.QUANTIDADE) != 
:NEW.QUANTIDADE THEN 
 raise_application_error (-20001, 'Quantidade não pode ser 
numero decimal e deve ser maior que zero'); 
 END IF; 
 
 IF :NEW.VALOR < 0 THEN 
 raise_application_error (-20002, 'Valor deve ser maior que 
zero'); 
 END IF; 
END;