Variáveis de Cursor no Oracle PL/SQL

Hoje, nosso foco está nas variáveis de cursor no Oracle PL/SQL. Este é um recurso avançado que permite manipular dados de maneira mais flexível e adaptável, essencial para cenários que exigem maior controle em consultas dinâmicas. Vamos explorar o conceito e sua aplicação prática.

O que são Variáveis de Cursor?

Imagine que você tem uma caixa mágica que pode se transformar em diferentes tipos de listas, dependendo do que você precisa no momento. Essa é a essência de uma variável de cursor. Diferente dos cursores que você já conhece, que são fixos a uma consulta específica, as variáveis de cursor podem ser associadas a diferentes consultas em tempo de execução.

Declarando Variáveis de Cursor

Existem duas maneiras principais de declarar variáveis de cursor:

  1. Usando o tipo predefinido SYS_REFCURSOR:

  1. Usando um tipo REF CURSOR personalizado:

Vamos ver alguns exemplos práticos usando o schema HR:

Neste Exemplo:

  1. Usamos cv_emp1 (SYS_REFCURSOR) para buscar funcionários do departamento 30.
  2. Usamos cv_emp2 (REF CURSOR genérico) para buscar funcionários com salário superior a 10000.
  3. Usamos cv_dept (REF CURSOR forte) para buscar departamentos na localização 1700.

Cada variável de cursor é aberta com uma consulta diferente, demonstrando a flexibilidade das variáveis de cursor. Note que:

  • O SYS_REFCURSOR (cv_emp1) pode ser usado com qualquer consulta.
  • O REF CURSOR genérico (cv_emp2) também é flexível, mas aqui demonstramos como ele pode ser usado para selecionar apenas algumas colunas.
  • O REF CURSOR forte (cv_dept) só pode ser usado com consultas que retornem exatamente a estrutura de departments%ROWTYPE.

Este exemplo demonstra como diferentes tipos de variáveis de cursor podem ser usados em situações variadas, proporcionando flexibilidade e segurança de tipo quando necessário.

Cursores Fracos vs. Fortes

  1. Cursores Fracos: São como canivetes suíços – flexíveis, mas podem ser perigosos se não usados com cuidado. Exemplo: cv_emp1 e cv_emp2 no código acima.
  2. Cursores Fortes: São como ferramentas especializadas – mais seguros, mas menos flexíveis. Exemplo: cv_dept no código acima.

Mais um Exemplo do Uso de Variáveis de Cursor

Neste exemplo, estamos buscando todos os funcionários do departamento 30.

Cuidados e Boas Práticas

  1. Sempre feche suas variáveis de cursor após o uso.
  2. Você pode reabrir uma variável de cursor sem fechá-la, mas é uma boa prática fechá-la antes de reabrir.
  3. Cuidado com o uso de atributos de cursor após fechar a variável.

Veja um exemplo que ilustra esses pontos:

Variáveis de Cursor com Parâmetros

As variáveis de cursor podem usar parâmetros, tornando-as ainda mais flexíveis:

Conclusão

As variáveis de cursor são ferramentas poderosas no seu arsenal PL/SQL. Elas oferecem flexibilidade para trabalhar com diferentes consultas dinamicamente, permitindo que você crie código mais adaptável e reutilizável.

Lembre-se:

  1. Use cursores fracos para máxima flexibilidade, mas com cuidado.
  2. Use cursores fortes quando precisar de segurança de tipo.
  3. Sempre feche suas variáveis de cursor após o uso.
  4. Tenha cuidado ao acessar atributos de cursor após fechar a variável.
  5. Variáveis de cursor podem ser reutilizadas para diferentes consultas.

Pratique bastante! Experimente criar diferentes tipos de variáveis de cursor, use-as com várias tabelas do schema HR, e veja como elas podem tornar seu código mais dinâmico e eficiente.

Scroll to Top