Oracle Collection API

A Oracle tem uma API para collections que facilita o acesso as informações armazenadas. Isso serve tanto para VARRAY, TABLE e ASSOCIATIVE ARRAY. Nesta API existe uma coleção de functions e procedures, algumas que já utilizamos aqui em exemplos anteriores. Vamos rever algumas dessa functions e procedures com mais detalhes, além de introduzir algumas novas opções.

COUNT

O método COUNT é uma função que não recebe nenhum argumento, sendo portanto um dos mais simples métodos da API. Ele retorna a quantidade de elementos dentro da collection.

Perceba que na linha 3 foi criado um varray com capacidade para 3 elementos, mas adicionamos apenas 2. Então o nosso COUNT retorna a quantidade 2 na linha 5.

DELETE

Já o método DELETE é uma procedure e possui duas versões. A primeira recebe apenas um parâmetro que significa o index do elemento que será excluído da coleção. Já a segunda versão recebe dois parâmetros e remove uma faixa de index da coleção. Essa função não funciona com VARRAY, apenas com NESTED TABLE e ASSOCIATIVE ARRAY.

Na imagem acima foi criado uma NESTED TABLE com 5 elementos, depois foi deletado os elementos com INDEX 1 e 3 nas linhas 5 e 6 do código. Restando então 3 elementos que é o que a linha 7 exibe. Mas ao fazer isso foi criado alguns GAPS, ou lacunas, que são index não utilizados no meio da nossa collection. Isso pode ser prejudicial ao tentar varrer toda a collection com um FOR, que é bastante comum, onde passamos sequencialmente por todos os index. Com esse FOR ele irá tentar acessar um elemento que não existe, será lançada uma exceção. Temos alguns outros métodos da API que pode nos ajudar a evitar isso e percorrer toda a collection sem problemas. Um deles é o próximo método.

EXISTS

Com essa função, podemos validar se existe algum elemento em determinado índice ou não, que é o seu único parâmetro. Uma observação a se fazer também, é que esse é o único método que não retorna uma exceção COLLECTION_IS_NULL quando a collection esta vazia, ou empty, retornando null no lugar da exceção.

Caso não fosse feito o IF na linha 8, a linha 9 iria ocorrer em erro, ao tentar acessar um elemento que não existe.

EXTEND

Esse método é uma procedure, sendo sobrecarregada com 3 versões. Uma sem nenhum argumento, aumentando o espaço da collection em 1. A segunda com 1 parâmetro, aumentando o espaço para a quantidade especificada. E por último, uma com dois parâmetros. O primeiro parâmetro é para especificar quantos espaços será aumentado. O segundo parâmetro é um index válido que será usado para copiar o elemento nesses novos espaços criados.

FIRST e LAST

A função FIRST retorna o primeiro index utilizado na collection, ao se trabalhar com associative array irá retornar o menor índice numérico ou o menor index em string, dependendo da forma como esta ordenado.Já o método LAST será o último ao invés do primeiro.

Veja na imagem acima que foi criado uma NESTED TABLE com 5 elementos, mas o primeiro e o último foram excluídos. Veja o problema que seria tentar criar um FOR com o início em 1 e o último sendo o COUNT, que neste caso a collection tem 3 elementos. O FOR iria tentar acessar os índices 1 até o 3. Sendo que o primeiro não existe, que foi excluído, e o último não é o index 3 e sim o 4. Mas ao utilizar o FIRST e LAST esse problema foi resolvido, não gerando erros no nosso código.

LIMIT

LIMIT é uma função e só poderá ser utilizado em um VARRAY e retorna o valor de um indéx mais alto possível, o tamanho do varray no momento em que foi declarado.

NEXT e PRIOR

Ambos os métodos são funções que recebem um argumento. O argumento seria um index válido e o retorno será o próximo index válido, isso no caso do NEXT. Caso seja usado o PRIOR, é só inverter a ordem. Quando chegamos ao fim, ou ao início, a função irá retornar null.

Na linha 9 inciamos a variável local lv_index utilizando a função FIRST, que retorna a primeira index válida. O incremento dessa variável é feito na linha 12, utilizando a função NEXT, que pula qualquer espaço existente na collection, como entre os índices 2 e 4.

TRIM

Para finalizar o post, veremos o último método, a procedure TRIM. Só funciona com VARRAY e TABLE. E existe duas opções sobrecarregadas. A primeira sem parâmetro, remove o espaço de um elemento. E a segunda opção seria com um parâmetro, que é a quantidade de espaços liberados. Esses elementos removidos são do final da collection.

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.077 Visualizações
%d blogueiros gostam disto: