Subcursores

Um subcursor nada mais é que um cursor dentro de outro cursor. Isto é feito utilizado uma correlated query no cursor. Para isto deveremos utilizar um tipo de dados chamado REF CURSOR que é utilizado apenas em código PL/SQL e utilizando loop aninhado para isto.

Isto é muito útil em alguns cenários. Um deles é a geração de relatórios. Veja um exemplo disto.

Foi feito apenas um simples Join para mostrar o nome da região e as suas respectivas cidades. Talvez isso não seja o desejado em um relatório, repetindo o nome da região, mas sim uma lista de cidade para cada região. Veja como ficaria com subcursor.

Veja na 7 que a nossa consulta do cursor tem um SUBCURSOR com outra consulta(correlated), ou seja, é um cursor dentro de outro cursor, um subcursor. Para trabalhamos com isto devemos criar uma variável do tipo REF CURSOR que foi feita na linha 4 referente ao TYPE da linha 2. Esse REF CURSOR foi utilizado na 14, onde fizemos o fetch do nosso cursor em uma variável do tipo VARCHAR2 e a outra variável do tipo REF CURSOR. Então foi criado um LOOP aninhado para se trabalhar com esse subcursor, gerando assim o relatório desejado conforme imagem abaixo.

Apenas a título de informação adicional, poderíamos remover a linha 2 da criação do TYPE REF CURSOR e na linha 4 modarmos para lv_cidades SYS_REFCURSOR. O SYS_REFCURSOR é apenas um tipo genérico já provido pelo Oracle. A mudança é somente textual, o resultado e performance é o mesmo!

Anúncios

Meu nome é Tércio Costa, sou formado em Ciências da Computação pela UFPB, tenho a certificação Oracle SQL Expert e OCP PL/SQL, mantendo um blog reconhecido pela OTN(oraclepress.wordpress.com), no qual também publico artigos técnicos no portal OTN, no portal http://www.profissionaloracle.com.br/gpo e na revista SQL Magazine. Além de tudo isto sou um Oracle ACE Associate por estar sempre contribuindo para a comunidade com um bom nível de expertise.

Marcado com: , , ,
Publicado em PL/SQL

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.

Esse Blog é reconhecido pela
Certificações
Sou articulista

Clique para seguir este blog e receber notificações via email de novos posts.

Tércio Costa

Tércio Costa

Meu nome é Tércio Costa, sou formado em Ciências da Computação pela UFPB, tenho a certificação Oracle SQL Expert e OCP PL/SQL, mantendo um blog reconhecido pela OTN(oraclepress.wordpress.com), no qual também publico artigos técnicos no portal OTN, no portal http://www.profissionaloracle.com.br/gpo e na revista SQL Magazine. Além de tudo isto sou um Oracle ACE Associate por estar sempre contribuindo para a comunidade com um bom nível de expertise.

Links Pessoais

Serviços verificados

Visualizar Perfil Completo →

Total de Visualizações da Página
  • 138.087 Visualizações
%d blogueiros gostam disto: