No contexto do uso de cursores por meio do Oracle PL/SQL, a...
No contexto do uso de cursores por meio do Oracle PL/SQL, analise o script a seguir.
DECLARE
v_CPF pessoa.CPF%type;
v_nome pessoa.nome%type;
-----------
BEGIN
OPEN teste;
LOOP
-----------
EXIT WHEN teste %notfound;
EXEC sp_inclui_beneficio(v_CPF);
END LOOP;
CLOSE teste;
END;
As linhas que substituem corretamente os trechos tracejados na
quarta e na oitava linhas do script acima são, respectivamente:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é a letra A:
CURSOR teste is SELECT CPF, nome FROM pessoa;
FETCH teste into v_CPF, v_nome;
Para compreender a resposta correta, é importante ter um conhecimento básico sobre o que são cursosres no contexto do Oracle PL/SQL. Em PL/SQL, um cursor é uma área de memória que guarda o resultado de uma consulta SQL. Quando se trabalha com PL/SQL, frequentemente precisamos iterar sobre conjuntos de resultados linha por linha - e é aí que entram os cursores.
No trecho de código fornecido, o cursor está sendo utilizado para iterar sobre todos os registros retornados pela consulta SQL. Vamos desmembrar a resposta correta para entender o seu funcionamento:
1. A primeira linha CURSOR teste is SELECT CPF, nome FROM pessoa;
é a declaração do cursor chamado teste, que contém a consulta que seleciona as colunas CPF e nome da tabela pessoa. Esta linha cria o cursor e define qual será o comando SQL que ele irá utilizar para buscar os dados.
2. A segunda linha FETCH teste into v_CPF, v_nome;
é o comando que, dentro do loop, obtém a próxima linha (registro) do cursor teste e atribui os valores às variáveis locais v_CPF e v_nome. Este passo é crucial para processar cada linha individualmente.
No script fornecido, antes de poder realizar o FETCH
, o cursor deve ser aberto com o comando OPEN teste;
, e após o processamento de todas as linhas, o cursor deve ser fechado com o comando CLOSE teste;
para liberar a área de memória utilizada.
A condição EXIT WHEN teste %notfound;
verifica se o cursor chegou ao final do conjunto de resultados. Se não houver mais linhas para processar, o loop é encerrado. A condição %notfound
é um atributo do cursor que se torna TRUE
quando a tentativa anterior de FETCH
não retornou nenhuma linha.
As demais alternativas são incorretas porque não utilizam a sintaxe correta de um cursor em PL/SQL. Por exemplo, a alternativa B utiliza DECLARE
e READ
, que não são comandos válidos para manipulação de cursores em PL/SQL. As outras alternativas apresentam também construções que não são compatíveis com a sintaxe correta do Oracle PL/SQL para declaração e uso de cursores.
Portanto, a alternativa A é a única que apresenta a declaração e o uso do cursor de acordo com a sintaxe correta do Oracle PL/SQL.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
A) CURSOR teste is SELECT CPF, nome FROM pessoa; FETCH teste INTO v_CPF, v_nome;
No Oracle PL/SQL, para trabalhar com cursores, é necessário declarar o cursor utilizando a sintaxe "CURSOR nome_cursor IS SELECT ..." e, em seguida, utilizar a cláusula FETCH para recuperar os valores das colunas na variável especificada. No caso, o cursor "teste" é declarado para selecionar as colunas "CPF" e "nome" da tabela "pessoa", e o comando FETCH é utilizado para armazenar os valores dessas colunas nas variáveis "v_CPF" e "v_nome" correspondentes.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo