No contexto do uso de cursores por meio do Oracle PL/SQL, a...

Próximas questões
Com base no mesmo assunto
Q1933264 Banco de Dados

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:

Alternativas

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