Buscar

26 Questões Resolvidas AV - Linguagem Procedural Banco de Dados PL/SQL Oracle 2020

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

EXERCÍCIOS (LISTA 03): 
 
10. Uma empresa oferece um bônus a seus funcionários com base no lucro líquido (tabela LUCRO) obtido durante o ano e no valor do 
salário do funcionário (tabela SALARIO). O bônus é calculado conforme a seguinte formula: BONUS = LUCRO * 0.01 + SALARIO * 0.05 
 
Crie uma procedure que receba o ano (tabela LUCRO) e número de matrícula do funcionário e devolva (imprima) o valor do seu 
respectivo bônus. 
 
--Criar a tabela LUCRO 
CREATE TABLE LUCRO (ANO NUMBER(4), VALOR NUMBER(9,2)); 
 
-- Criar a tabela SALARIO 
CREATE TABLE SALARIO (MATRICULA NUMBER(4), VALOR NUMBER(7,2)); 
 
--Inserir dados 
INSERT INTO LUCRO VALUES (2017,1200000); 
INSERT INTO LUCRO VALUES (2018,1500000); 
INSERT INTO LUCRO VALUES (2019,1400000); 
INSERT INTO LUCRO VALUES (2020, 1300000); 
INSERT INTO SALARIO VALUES (1001,5500); 
INSERT INTO SALARIO VALUES (1002,6200); 
INSERT INTO SALARIO VALUES (1003,8400); 
 
CREATE OR REPLACE PROCEDURE SP_CALCULA_BONUS 
(P_ANO LUCRO.ANO%TYPE, P_MAT SALARIO.MATRICULA%TYPE) IS 
 
V_LUCRO LUCRO.VALOR%TYPE; 
V_SALARIO SALARIO.VALOR%TYPE; 
V_BONUS NUMBER(7,2); 
 
BEGIN 
SELECT VALOR INTO V_LUCRO FROM LUCRO 
WHERE ANO = P_ANO; 
 
SELECT VALOR INTO V_SALARIO FROM SALARIO 
WHERE MATRICULA = P_MAT; 
 
V_BONUS := V_LUCRO * 0.01 + V_SALARIO * 0.05; 
 
DBMS_OUTPUT.PUT_LINE ('Valor do Bonus: ' || V_BONUS); 
END; 
/ 
 
SET SERVEROUTPUT ON; 
EXECUTE SP_CALCULA_BONUS (2017,1001); 
11. Todos os programas em PL/SQL são compostos por blocos. Para tanto, um bloco é definido basicamente com as seguintes palavras 
chaves: 
A OPEN - BEGIN - EXCEPTION - CLOSE 
B DECLARE - BEGIN - END - CLOSE 
C DECLARE - BEGIN - EXCEPTION - END 
D OPEN - BEGIN - END - CLOSE 
E BEGIN - OPEN - CLOSE – END 
 
 
12. Em PL/SQL, quanto aos cursores explícitos, os três comandos essenciais existentes são: 
A START, SEEK e CLOSE 
B OPEN, FETCH e CLOSE 
C OPEN, SEEK e END 
D START, FETCH e END 
E OPEN, SEEK e CLOSE 
 
 
13. Os comentários em arquivos de comando PL/SQL são feitos com a utilização do caractere #. 
C Certo 
E Errado 
 
 
14. Analise o scritpt PL/SQL a seguir: 
 
DECLARE 
 c_livroid livro.livroid%type; 
 c_titulo livro.titulo%type; 
 CURSOR c_livros is 
 SELECT livroid, titulo FROM livro; 
BEGIN 
 OPEN c_livros; 
 LOOP 
 .......; 
 EXIT WHEN c_livros%notfound; 
 dbms_output.put_line(c_livroid || ' ' ||c_titulo); 
 END LOOP; 
 CLOSE c_livros; 
END; 
Para que esse script funcione corretamente, exibindo os códigos identificadores e títulos de cada livro, a linha pontilhada deve ser 
substituída por: 
A READ c_livroid, c_titulo FROM c_livros 
B GET c_livros AS c_livroid, c_titulo 
C RECOVER c_livroid, c_titulo FROM c_livros.livroid, c_livros.titulo 
D FETCH c_livros into c_livroid, c_titulo 
E SET NEXT c_livroid = c_livros.livroid, c_titulo= c_livros.livroid 
15. No procedimento em PL/SQL abaixo, o parâmetro IN serve para: 
 
PROCEDURE define_atividade 
(ultima_data IN DATE, 
tarefa_desc IN OUT VARCHAR2, 
prox_data OUT DATE) 
 
A Aplicar um desconto e retroagir a prox_data 
B Passar valores dentro do procedimento define_atividade 
C Não faz nenhuma diferença e não implica em nada ao parâmetro 
D Incluir um novo registro na tabela DATE 
 
 
16. No Oracle, a linguagem procedural que permite estreito acoplamento com o SQL é conhecida como: 
A Data Pump 
B PL/SQL 
C SQL Explorer 
D SQL*Loader 
E Transact SQL 
 
17. Assim como as procedures, com PL/SQL é possível criar funções. Qual das alternativas abaixo está ERRADA em relação ao comando 
baixo? 
 
CREATE OR REPLACE FUNCTION cpmf (p_value IN NUMBER) 
 RETURN NUMBER IS 
BEGIN 
 RETURN (p_value * 0.038); 
END cpmf; 
 
A Cria uma função chamada cpmf para calcular e retornar 0,38% de um valor 
B Se uma função de mesmo nome existir, deverá ser eliminada e substituída por uma versão mais nova 
C O modo usado indica que o parâmetro é de entrada 
D A função pode ser chamada usando o comando: 
SELECT empno, ename, sal, cpmf(sal) FROM scott.empregados WHERE deptno = 10 
E A diferença entre procedimento e função é que a procedure retorna ao menos um valor 
 
 
18. O PL/SQL faz uso de identificadores. Há apenas identificadores válidos do PL/SQL em: 
A “meu prog”, grande_programa, inicio&fim, gerador 
B a&b, resta&1, ultimo-teste, entre2 
C a/b, hoje, base$10, data12 
D teste, primeiro_passo, abc$123, caso#1 
E uma-vez, passo#3, um/dois, “fase 8” 
19. Com PL/SQL é possível trabalhar com procedimentos e reaproveitar código. Um procedimento pode aceitar argumentos e ser 
chamado por um programa, uma sessão SQL etc. Desta forma, assinale a alternativa INCORRETA em relação ao código abaixo: 
 
CREATE OR REPLACE PROCEDURE aumenta_sal (p_empno IN empregados.empno%TYPE) 
IS 
BEGIN 
 UPDATE scott.empregados 
 SET sal = sal * 1.10 
 WHERE empno = p_empno; 
END aumenta_sal; 
 
A O REPLACE verifica se a procedure já existe. Caso positivo, ela será eliminada e substituída por uma nova versão 
B O parâmetro p_empno será do mesmo tipo e tamanho que a coluna empno da tabela empregados 
C Cria uma procedure de nome aumenta_sal 
D O modo usado indica que o parâmetro é de saída 
E Cria uma procedure para aumentar o salário de um funcionário em 10% 
 
 
20. Caso seja utilizado o comando de manipulação de dados SELECT em um bloco PL/SQL, deverá ser incluído, obrigatoriamente, a 
cláusula INTO. 
C Certo 
E Errado 
 
21. Considere as seguintes afirmações, relativas à estrutura básica de um bloco PL/SQL. 
 
I. A seção DECLARE é opcional e é utilizada para a declaração de variáveis, cursores, tipos e subprogramas, e outros elementos utilizados 
no programa. 
II. O conteúdo entre BEGIN e END é uma seção obrigatória onde ficam as instruções procedimentais. Esta seção deve conter pelo 
menos uma linha de código executável, que pode ser apenas o comando NULL para indicar que nada deve ser executado. 
III. A seção EXCEPTION é opcional e é onde ficam as instruções de tratamento de erro. 
 
Quais estão corretas? 
A Apenas I 
B Apenas II 
C Apenas III 
D Apenas I e III 
E I, II e III 
 
 
22. CURSOR é uma área de trabalho temporária criada na memória do sistema quando um comando SQL é executado. 
C Certo 
E Errado 
 
23. Considere, abaixo, a sintaxe de uma procedure PL/SQL. 
 
A opção [mode] define o modo de utilização do parâmetro e pode ser os valores: 
A IN, OUT ou IN OUT 
B OPEN 
C BETWEEN 
D SET 
E SEND 
 
 
24. A unidade básica em PL/SQL é um bloco com a seguinte estrutura: 
DECLARE: que é a seção para declaração de variáveis, tipos e subprogramas locais; 
BEGIN: única seção do bloco que é indispensável e obrigatória, que é a seção executável, na qual ficam as instruções 
 procedimentais e SQL; 
EXCEPTION: seção/setor onde ficam as instruções de tratamento de erro; 
END. 
 
C Certo 
E Errado 
25. Com relação aos subprogramas PL/SQL, considere: 
 
I. São blocos PL/SQL nomeados que podem ser chamados com um conjunto de parâmetros. 
II. Podem ser um procedimento ou uma função. Em geral, a função é usada para realizar uma ação e o procedimento para calcular e 
retornar um valor. 
III. Podem ser agrupados em pacotes PL/SQL. 
IV. Podem ser declarados e definidos de duas formas: ou em um bloco PL/SQL ou em outro subprograma. 
 
Está correto o que se afirmar APENAS em: 
A II e IV 
B I, III e IV 
C I, II e III 
D III e IV 
E I e III 
 
 
26. O comando DECLARE CURSOR permite a recuperação e a manipulação de registros em uma tabela, linha a linha. Para isso, deve-se 
declarar o cursor, abrir o cursor, recuperar as linhas do cursor e fechar o cursor, empregando os comandos DECLARE, OPEN, FETCH e 
CLOSE respectivamente. 
C Certo 
E Errado 
 
27. Considere a sintaxe de instrução Oraclea seguir: 
 
CREATE [OR REPLACE] FUNCTION function_name 
[(parameter1 [mode1] datatype1, . . .)] 
RETURN datatype IS|AS 
[local_variable_declarations; . . .] 
 BEGIN -- actions; 
 RETURN expression; 
 END [function_name]; 
 
Sobre esta sintaxe, é correto afirmar que 
A A opção OR REPLACE não é permitida na criação de funções 
B RETURN datatype não deve incluir uma especificação de tamanho 
C O bloco começa com uma instrução BEGIN e termina com uma instrução END, seguida obrigatoriamente do nome da função 
D A instrução RETURN expression é opcional, já que uma função não precisa retornar valor 
E É possível fazer referência a variáveis passadas como parâmetros no bloco PL/SQL de uma função armazenada. 
 
 
28. O %NOTFOUND depois do nome do cursor é verdadeiro quando o FETCH, por meio do cursor, falha na busca de alguma tupla. 
C Certo 
E Errado 
 
29. Considere a tabela EMP em um banco de dados Oracle, contendo os campos ID, NOME, CARGO e SALARIO. Considere ainda que o 
seguinte procedimento tem a intenção de reajustar o salário de todos os funcionários em 20%: 
 
CREATE OR REPLACE PROCEDURE aumento 
BEGIN 
UPDATE EMP SET SALARIO = SALARIO * 1.2; 
END; 
 
Para que o procedimento seja considerado correto é necessário: 
A Retirar a instrução OR REPLACE, pois de outra forma, ocorrerá um erro de sintaxe 
B Trocar a palavra-chave SET por VALUE 
C Trocar a palavra-chave BEGIN por { e END por } 
D Acrescentar a palavra-chave IS imediatamente antes da instrução BEGIN 
E Acrescentar a palavra-chave START imediatamente após a instrução BEGIN 
 
 
30. No tipo de dados Escalar, NÃO é uma das quatro famílias de tipos de dados predefinidos do PL/SQL: 
A SYS_REFCURSOR 
B DATETIME 
C NUMERIC 
D CHARACTER 
E BOOLEAN 
 
31. Nas estruturas de controle de ITERAÇÃO dos programas PL/SQL são utilizadas apenas as instruções: 
A LOOP e IF 
B IF e CASE 
C GOTO e NULL 
D CASE e GOTO 
E LOOP e EXIT 
 
 
32. Para passar resultados de consultas entre subprogramas PL/SQL, quando um subprograma executa uma query e o resultado será 
processado por outro subprograma, utiliza-se uma: 
A View 
B Subquery 
C Variável cursor 
D Variável bind 
E Variável locator 
 
 
33. Em PL/SQL, parâmetros cujo tipo não esteja explicitamente declarado são considerados como do tipo IN. 
C Certo 
E Errado 
 
34. Em PL/SQL operações lógicas podem ser efetuadas com os operadores OR, AND e NOT. Considere as operações lógicas abaixo: 
 
I. FALSE AND NULL 
II. TRUE AND NULL 
 
Essas operações resultarão, respectivamente, em 
A FALSE e FALSE 
B FALSE e TRUE 
C NULL e NULL 
D NULL e TRUE 
E FALSE e NULL 
 
 
35. Em uma estrutura de seleção usada em PL/SQL, é uma forma INVÁLIDA para realizar um teste de condição: 
A CASE 
B LOOP 
C IF-THEN 
D IF-THEN-ELSE 
E IF-THEN-ELSIF 
 
36. Considere a seguinte sub-rotina PL/SQL: 
 
Sobre ela, é correto afirmar que: 
A O resultado de EXEC decisao (5.5, 4.5); é 10.0 
B O procedimento decisao recebe 2 parâmetros reais e apresenta apenas o resultado da adição dos valores cuja soma seja maior 
ou igual a 10 
C O comando de decisão IF utilizado no procedimento apresenta erros de sintaxe 
D O resultado de EXEC decisao (5.5, 6.5); é 12.0 
E Não existe ELSE no comando de decisão IF; o certo seria usar ELSEIF

Outros materiais