Questão nº 49
Questão de Banco de Dados e Gestão da Informação · FGV SEFAZ-AM 2022 - Prova I (nº 49)
Analise o código Oracle PL/SQL.
```
DECLARE
s_mat aluno.matricula%type;
s_nom aluno.nome%type;
s_cur aluno.curso%type;
CURSOR cur_alunos is
...;
BEGIN
OPEN cur_alunos;
LOOP
FETCH cur_alunos
into s_mat, s_nom, s_cur;
EXIT WHEN cur_alunos%notfound;
dbms_output.put_line(s_mat || ' ' ||
s_nom || ' ' ||
s_cur);
END LOOP;
CLOSE cur_alunos;
END;
/
```
Assinale a opção que apresenta o trecho que deve substitui corretamente os pontos “...” na sexta linha do código.
- AGET aluno
- BIMPORT FROM aluno TO cur_alunos
- CREAD FROM aluno
- DSELECT matricula, nome, curso FROM aluno (alternativa correta)
- EWITH * FROM aluno
Resposta comentada
Gabarito Alternativa D
Um cursor em PL/SQL é uma área de memória nomeada que armazena o resultado de uma consulta SQL (SELECT). Ele permite que você processe as linhas (registros) retornadas por essa consulta uma a uma.
- (A) Incorreta:
GET alunonão é uma sintaxe SQL ou PL/SQL válida para definir um cursor. - (B) Incorreta:
IMPORT FROM aluno TO cur_alunosé uma sintaxe relacionada a operações de importação de dados, não à definição de uma consulta para um cursor. - (C) Incorreta:
READ FROM alunonão é uma sintaxe SQL ou PL/SQL válida para definir um cursor. - (D) Correta: A definição de um cursor é feita com uma instrução
SELECT. Esta opçãoSELECT matricula, nome, curso FROM alunoé uma consulta SQL válida que seleciona as três colunas (matricula,nome,curso) da tabelaaluno, correspondendo exatamente às três variáveis (s_mat,s_nom,s_cur) declaradas e usadas na instruçãoFETCHdo código. - (E) Incorreta:
WITH * FROM alunonão é uma sintaxe SQL válida para definir a consulta principal de um cursor. A cláusulaWITHé usada para Common Table Expressions (CTEs) e precede uma instruçãoSELECTcompleta. Além disso, mesmo que fosseSELECT * FROM aluno, isso selecionaria todas as colunas da tabelaaluno, o que causaria um erro na instruçãoFETCHque espera exatamente três colunas (s_mat, s_nom, s_cur). A armadilha aqui é queSELECT *é uma consulta comum, mas a sintaxeWITH * FROM alunoestá errada e o número de colunas não corresponde aoFETCH.
Fonte: FGV SEFAZ-AM 2022 - Prova I Analista de Tecnologia da Informação da Fazenda Estadual (Caderno Tipo 1). Reproduzida para fins de estudo.