Cursores Implícitos em Oracle PL/SQL

Olá, bem vindo ao artigo sobre Cursores Implícitos em Oracle PL/SQL ! Hoje vamos mergulhar fundo no fascinante mundo dos cursores implícitos em Oracle PL/SQL. Preparem-se para um conteúdo detalhado, repleto de exemplos práticos e insights valiosos!

Preparação do Ambiente

Para executar os exemplos relacionados a cursores, é preciso criar os objetos abaixo.

O que são Cursores Implícitos?

Cursores implícitos são como assistentes invisíveis que o PL/SQL cria e gerencia automaticamente para você sempre que você executa uma instrução SQL. Eles são a mágica por trás de cada operação SQL que você realiza em seu código PL/SQL.

Quando os Cursores Implícitos entram em ação?

Os cursores implícitos são criados automaticamente nas seguintes situações:

  1. Quando você executa um comando SELECT … INTO
  2. Para cada instrução INSERT, UPDATE ou DELETE
  3. Em comandos SQL dinâmicos executados com EXECUTE IMMEDIATE

Como funcionam os Cursores Implícitos?

Quando você executa uma instrução SQL, o PL/SQL:

  1. Cria um cursor implícito
  2. Processa a instrução SQL
  3. Armazena informações sobre a execução
  4. Fecha automaticamente o cursor

Tudo isso acontece nos bastidores, sem que você precise gerenciar explicitamente.

Atributos de Cursores Implícitos: Seus Superpoderes Ocultos

Os cursores implícitos têm atributos especiais que nos permitem obter informações valiosas sobre a execução da última instrução SQL. Esses atributos são prefixados com ‘SQL%':

  1. SQL%ISOPEN: Sempre retorna FALSE para cursores implícitos, pois o PL/SQL os fecha imediatamente após a execução.
  2. SQL%FOUND: Retorna TRUE se a instrução SQL afetou uma ou mais linhas, FALSE se nenhuma linha foi afetada.
  3. SQL%NOTFOUND: É o oposto lógico de SQL%FOUND. Retorna TRUE se nenhuma linha foi afetada, FALSE se uma ou mais linhas foram afetadas.
  4. SQL%ROWCOUNT: Retorna o número de linhas afetadas pela instrução SQL.

Vamos ver cada um desses atributos em ação com exemplos detalhados!

Exemplos Práticos de Cursores Implícitos

Exemplo 1: SELECT … INTO

Vamos começar com um exemplo simples de SELECT … INTO:

Neste exemplo, o PL/SQL cria um cursor implícito para o SELECT … INTO. Se um funcionário for encontrado, SQL%FOUND será TRUE e SQL%ROWCOUNT será 1.

Exemplo 2: UPDATE com Cursor Implícito

Agora, vamos ver como os atributos funcionam com um UPDATE:

Aqui, SQL%FOUND nos diz se algum funcionário foi atualizado, e SQL%ROWCOUNT nos informa quantos foram afetados.

Exemplo 3: DELETE com Cursor Implícito

Vamos explorar um exemplo com DELETE:

Este script demonstra como usar SQL%FOUND e SQL%ROWCOUNT em uma operação DELETE.

Exemplo 4: INSERT com Cursor Implícito

Vejamos como os atributos funcionam com INSERT:

Este exemplo mostra como verificar se uma inserção foi bem-sucedida usando SQL%ROWCOUNT.

Exemplo Completo: Utilizando Todos os Atributos

Agora, vamos ver um exemplo que utiliza todos os atributos de cursor implícito em diferentes operações:

Este script demonstra:

  1. Uso de SELECT … INTO com tratamento de exceção NO_DATA_FOUND.
  2. Utilização de SQL%FOUND e SQL%ROWCOUNT após UPDATE.
  3. Verificação de SQL%ROWCOUNT após INSERT.
  4. Uso de SQL%ROWCOUNT após DELETE.
  5. Demonstração de que SQL%ISOPEN sempre retorna FALSE para cursores implícitos.

Dicas Avançadas para Cursores Implícitos

  1. Sempre verifique SQL%FOUND após operações DML para garantir que a operação afetou as linhas esperadas.
  2. Use SQL%ROWCOUNT para auditar o número de linhas afetadas por operações em massa.
  3. Lembre-se de que os atributos de cursor implícito são atualizados após cada instrução SQL, então use-os imediatamente após a operação relevante.
  4. Em blocos PL/SQL aninhados, os atributos referem-se sempre à instrução SQL mais recentemente executada.
  5. Para operações SQL dinâmicas usando EXECUTE IMMEDIATE, os atributos de cursor implícito ainda funcionam da mesma forma.

Conclusão

Ufa! Chegamos ao fim desta jornada pelos cursores implícitos em PL/SQL. Vimos que, embora sejam “invisíveis”, os cursores implícitos são ferramentas poderosas que nos fornecem informações valiosas sobre nossas operações SQL.

Pontos-chave para lembrar:

  1. Cursores implícitos são criados automaticamente para cada instrução SQL.
  2. Use SQL%FOUND, SQL%NOTFOUND, e SQL%ROWCOUNT para obter informações sobre a execução da instrução.
  3. SQL%ISOPEN sempre retorna FALSE para cursores implícitos.
  4. Esses atributos são essenciais para validar e auditar suas operações SQL dentro do PL/SQL.
Rolar para cima