O que é um Cursor em PL/SQL?
Uma estrutura do Oracle que permite interagir com os dados de uma consulta linha a linha, seguindo uma ordem específica.
Quais são as quatro etapas para usar um Cursor em PL/SQL?
Declaração, Abertura, Percorrer e Fechamento.
O que acontece quando você declara um cursor?
Você define o nome do cursor e a consulta SQL que será utilizada para preenchê-lo. O cursor é criado em memória, mas ainda não está acessível.
O que acontece quando você abre um cursor?
O cursor se torna acessível e o ponteiro interno é posicionado na primeira linha do resultado da consulta.
Qual o comando utilizado para buscar dados do cursor e atribuí-los a uma variável?
FETCH CURSOR_NAME INTO @VARIABLE_NAME;
O que acontece quando você fecha um cursor?
O cursor é desativado e não pode mais ser acessado.
Qual a sintaxe para declarar um cursor em PL/SQL?
CURSOR nome_do_cursor IS SELECT colunas FROM tabela;
Qual comando é usado para abrir um cursor?
OPEN nome_do_cursor;
O que a seção DECLARE faz neste código?
Declara as variáveis v_ID e v_RAZAO para armazenar os valores do ID e da razão social do cliente, e declara o cursor cur_CLIENTE que seleciona o ID e a razão social da tabela CLIENTE.
Qual a função do cursor cur_CLIENTE?
Armazenar o resultado da consulta SELECT ID, RAZAO_SOCIAL FROM CLIENTE para que possa ser percorrido linha a linha.
O que o comando OPEN cur_CLIENTE; faz?
Abre o cursor, permitindo que os dados da consulta sejam acessados.
Qual a finalidade do LOOP neste código?
Percorrer cada linha do resultado do cursor.
O que o comando FETCH cur_CLIENTE INTO v_ID, v_RAZAO; faz?
Recupera os valores da linha atual do cursor e os armazena nas variáveis v_ID e v_RAZAO.
Qual a função da linha EXIT WHEN cur_CLIENTE%NOTFOUND;?
Interrompe o loop quando não há mais linhas para serem lidas no cursor.
Qual a finalidade geral deste código?
Percorrer a tabela CLIENTE, linha a linha, e exibir o ID e a razão social de cada cliente.
Faça um programa em PL/SQL para simular este código:
Qual a finalidade do bloco DECLARE?
Declaração de variáveis e cursor. No exemplo, v_SEGMERCADO armazena o novo segmento de mercado, v_ID recebe o ID do cliente e cur_CLIENTE é o cursor que seleciona os IDs dos clientes.
Qual a função da linha CURSOR cur_CLIENTE IS SELECT ID FROM CLIENTE;?
Declara um cursor chamado cur_CLIENTE que seleciona todos os valores da coluna ID da tabela CLIENTE. Este cursor será usado para percorrer cada ID de cliente.
Qual a finalidade do bloco BEGIN … END;?
Contém a lógica principal do código, como abrir o cursor, percorrer os IDs dos clientes e atualizar o segmento de mercado.
O que fazem as linhas OPEN cur_CLIENTE; e CLOSE cur_CLIENTE;?
OPEN cur_CLIENTE;: Abre o cursor, permitindo que ele seja usado para buscar os dados.
CLOSE cur_CLIENTE;: Fecha o cursor, liberando os recursos alocados.
Explique o que o bloco LOOP … END LOOP; faz.
Cria um loop que itera sobre os registros do cursor. Dentro do loop, cada ID de cliente é buscado e a procedure ATUALIZAR_SEGMERCADO é chamada para atualizar o segmento de mercado.
Qual a função das linhas FETCH cur_CLIENTE INTO v_ID; e EXIT WHEN cur_CLIENTE%NOTFOUND;?
FETCH cur_CLIENTE INTO v_ID;: Recupera o próximo ID do cliente do cursor e armazena na variável v_ID.
EXIT WHEN cur_CLIENTE%NOTFOUND;: Sai do loop quando não há mais registros no cursor (ou seja, quando o cursor chega ao final).
Aplique o uso de CURSOR para evitar identificadores de vendas na tabela PRODUTO_VENDA_EXERCICIO que fujam da ordem sequencial numérica.
Qual é a estrutura básica para usar WHILE com um cursor em PL/SQL?