Introdução às coleções PL / SQL

Primeiro de tudo, como outras linguagens de programação modernas, o PL / SQL também oferece aos programadores a possibilidade de usar coleções de PL / SQL. Portanto, em termos gerais, a coleção é uma estrutura de dados com um grupo ordenado de elementos do mesmo tipo de dados e esses elementos são acessados ​​por meio de índices de acordo com os requisitos específicos. As coleções mais usadas na maioria das linguagens de programação são Matrizes, Conjunto, Lista e Fila etc.

A coleção PL / SQL oferece muitas vantagens ao programador e ao usuário ao armazenar e acessar os dados de tipos de dados semelhantes em um aplicativo. Quando é necessário processar os dados de uma só vez ou manipular uma grande quantidade de dados, as coleções PL / SQL são muito úteis. Também reduz o tamanho e a velocidade de processamento enquanto armazena os dados e acessa os elementos. Os elementos nas coleções podem ser acessados ​​facilmente através de loops e índices. Ao contrário de matrizes em outras linguagens de programação, o PL / SQL suporta apenas coleções unidimensionais e os dados nas coleções são identificados pelos subscritos (também chamados de índice em outras linguagens). Cada elemento é acessado e processado através deste subscrito exclusivo.

Tipos de coleções PL / SQL

As coleções PL / SQL são de 3 tipos, que são fornecidos abaixo com sintaxe:

Tabelas aninhadas

Uma tabela aninhada é uma coleção PL / SQL na qual o tamanho não é fixo. Portanto, é como uma matriz unidimensional, exceto pelo fato de que o tamanho é fixo em matrizes e pode ser denso e esparso. O programador precisa estender a memória todas as vezes antes de usá-la usando EXTEND Subscript na tabela Nested começa com um número inteiro '1'.

As tabelas aninhadas estão em coleções persistentes PL / SQL, o que significa que elas podem ser reutilizadas posteriormente conforme armazenadas no banco de dados. O programador também pode excluir um elemento da matriz e tornar a tabela esparsa, o que significa que as tabelas aninhadas podem ser densas e esparsas. As tabelas aninhadas podem ser declaradas dentro do bloco PL / SQL ou no nível do esquema.

Como não há limite para o tamanho superior nas tabelas aninhadas, elas se enquadram na categoria de coleções PL / SQL não vinculadas.

Sintaxe:

TYPE typ_name IS table of element_data_type;
Table_name typ_name;

Matrizes de tamanho variável ou VARRAYs

VARRAY é a coleção PL / SQL na qual o tamanho da coleção é fixo, conforme definido em sua definição, de modo que VARRAYs são chamados de elementos limitados. Elementos em matrizes são preenchidos sequencialmente a partir do subscrito 1. Diferentemente das tabelas aninhadas, as varrays fornecem menos flexibilidade à medida que são densas. só. Portanto, o programador não pode excluir nenhum elemento do meio, o varray inteiro é excluído ou pode ser aparado a partir do final. Varrays deve ser acessado e armazenado sequencialmente. Pode ser definido dentro do bloco PL / SQL ou no nível do esquema. Como as tabelas aninhadas, os varrays se enquadram na categoria de coleções persistentes, para que possam ser reutilizados e armazenados no banco de dados.

Sintaxe:

TYPE typ_name IS VARRAY OF element_data_type;

Matrizes associativas

Como o nome sugere, matrizes associativas são usadas para manter os valores em pares chave-valor. A chave usada pode ser um tipo de sequência ou número inteiro. Matrizes associativas também são chamadas de tabela Índice por. Essa coleção pode ser densa ou esparsa. Em matrizes associativas, o tamanho da matriz não é fixo na inicialização e o programador não precisa inicializá-las antes de usá-lo. Uma matriz associativa se enquadra na categoria de coleções não persistentes, o que significa que elas não são armazenadas no banco de dados e não podem ser reutilizadas, sendo definidas dentro do bloco PL / SQL e usadas apenas nessa sessão específica. Essas matrizes estão na categoria de coleções ilimitadas.

Sintaxe:

TYPE typ_name IS TABLE OF element_data_type;

Métodos de Coleta

O PL / SQL fornece alguns métodos predefinidos para facilitar o trabalho com coleções. Alguns dos métodos são apresentados abaixo:

S.No.Nome do métodoDescrição
1CONTAGEMRetorna o número de elementos presentes na coleção
2)PRIMEIRORetorna o menor (primeiro) número de índice na coleção para subscritos inteiros
3)ÚLTIMORetorna o maior (último) número de índice da coleção para subscritos inteiros.
4)EXISTENTES (n)É usado para verificar se um elemento específico está presente na coleção ou não. Retorna TRUE se os enésimos elementos estiverem presentes na coleção, FALSE se não estiver.
5)ANTERIOR (n)Retorna o número do índice que é o predecessor do índice (n) fornecido pelo usuário na coleção.
6NEXT (n)Retorna o número do índice que é o sucessor do índice (n) fornecido pelo usuário na coleção.
7)APARARÉ usado para remover elementos da coleção. TRIM remove o último elemento da coleção e TRIM (n) remove o último n elemento do final da coleção.
8)EXCLUIRÉ usado para remover todos os elementos da coleção fornecida. Define a contagem da coleção como 0 após remover todos os elementos
9DELETE (m, n)É usado no caso de matrizes associativas e tabelas indexadas para remover todos os elementos no intervalo de m a n. Retorna null se m for maior que n.
10)LIMITEÉ usado para verificar o tamanho máximo da coleção.

Exceções de coleção

Dada a seguir, estão algumas das exceções que mais provavelmente surgem ao trabalhar com coleções.

Nome da exceçãoUm cenário em que a exceção surge
NENHUM DADO ENCONTRADOUma exceção surge quando um subscrito referencia um elemento que é excluído e não existe mais.
VALUE_ERRORA exceção ocorre quando o valor das colunas que tentam acessar não é convertível para o tipo de chave ou quando um índice é nulo
COLLECTION_IS_NULLSurgem exceções ao trabalhar em uma coleção nula automaticamente
SUBSCRIPT_BEYOND_CO UNTUma exceção surge quando um subscrito excede a contagem máxima de um número de elementos na coleção.
SUBSCRIPT_OUTSIDE_LIM ITA exceção surge ao tentar fazer referência usando o número do índice que está fora do intervalo legal.
TOO_MANY_ROWSUma exceção surge quando uma instrução SELECT into retorna mais de 1 linha.

Vantagens das coleções em PL / SQL

Algumas das vantagens das coleções PL / SQL são apresentadas abaixo:

  • Além disso, uma das maiores vantagens das coleções é que ela melhora o desempenho do sistema, armazenando em cache os dados estáticos que precisam ser acessados ​​regularmente.
  • Mais importante, as coleções são úteis ao trabalhar com um grande conjunto de dados com o mesmo tipo de dados no qual o usuário precisa executar várias operações DML.
  • Ao usar a variável de coleção única, podemos reduzir o número múltiplo de variáveis ​​usadas para armazenar valores diferentes e, portanto, salvar a memória.
  • A realização de operações diferentes, como armazenamento e processamento de dados, torna-se fácil através dos métodos de coleta PL / SQL já fornecidos.

Conclusão

Através da descrição acima, você pode ter uma idéia do que é a coleção PL / SQL e dos métodos que podem ser usados ​​nas coleções PL / SQL. Antes de usar qualquer tipo de coleção PL / SQL no programa, o desenvolvedor precisa pensar profundamente sobre o cenário antes de escolher qualquer tipo. Embora o trabalho em coleções PL / SQL não seja difícil, mas certas exceções podem surgir em diferentes pontos dos quais o programador deve estar ciente e saber como lidar com eles.

Artigos recomendados

Este é um guia para coleções PL / SQL. Aqui discutimos a sintaxe, os tipos, os métodos e as exceções das coleções PL / SQL, além das vantagens. Você também pode consultar os seguintes artigos para saber mais -

  1. Cursores em PL / SQL
  2. Instrução CASE em PL / SQL
  3. Perguntas da entrevista do Oracle PL / SQL
  4. Comandos PL / SQL