← Questões de Banco de Dados

Banco de Dados · FGV · 2022

Questão comentada de Banco de Dados

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.

Gabarito: D

Em PL/SQL, um cursor explícito funciona como uma “fila” de registros vindos de uma consulta SQL. Primeiro você declara o cursor com um SELECT, depois abre, faz FETCH linha a linha e, por fim, fecha. A lógica do bloco dado mostra exatamente isso: as variáveis s_mat, s_nom e s_cur recebem os campos retornados pela consulta do cursor cur_alunos. O ponto central da questão é que o trecho faltante na declaração do cursor precisa ser uma instrução SQL SELECT, porque é ela que define quais colunas serão lidas da tabela aluno. Como as variáveis foram tipadas com aluno.matricula%type, aluno.nome%type e aluno.curso%type, faz todo sentido buscar matricula, nome e curso nessa ordem. Por isso, o gabarito D está correto: "SELECT matricula, nome, curso FROM aluno". É exatamente esse comando que alimenta o cursor cur_alunos com três colunas compatíveis com o FETCH realizado depois. Sem esse SELECT, o cursor não tem fonte de dados e o bloco não fecha a conta. As demais alternativas inventam verbos que não pertencem à sintaxe Oracle PL/SQL para cursor. Em prova, a banca costuma cobrar essa base: cursor explícito = declaração com SELECT, OPEN, FETCH e CLOSE. Parece simples, e é mesmo - mas a FGV adora trocar o SELECT por palavras fantasiosas para ver se voce cai no conto.

Continue treinando

Questões relacionadas