Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como criar VARRAYs como objeto de banco de dados no banco de dados Oracle




O escopo do VARRAY que é criado como membro do bloco PL/SQL está limitado ao bloco em que ele é criado, ou seja, não podemos usar este VARRAY fora do seu bloco ou mesmo reutilizá-lo e essa é sua maior desvantagem. Então vá em frente e continue lendo para descobrir como podemos superar essa desvantagem do VARRAY.

Essa desvantagem pode ser facilmente superada se pudermos descobrir uma maneira de criar o VARRAY fora do bloco PL/SQL e armazená-lo permanentemente no esquema. Felizmente, podemos atingir os dois objetivos criando o VARRAY como um objeto de banco de dados. É exatamente isso que vamos aprender neste tutorial.

Neste tutorial vamos aprender -
  • Como criar VARRAY como objeto de banco de dados.
  • Como usar esse varray.
  • Como inserir dados no VARRAY.
  • Como recuperar dados do VARRAY
  • Como atualizar os dados do VARRAY.

Vamos começar com o primeiro passo.

Como criar VARRAY como objeto de banco de dados?

	SET SERVEROUTPUT ON;
	CREATE OR REPLACE TYPE dbObj_vry IS VARRAY (5) OF NUMBER;
	/

O código acima na execução bem-sucedida criará um VARRAY com o nome dbObj_vry que terá o limite de tamanho de 5 elementos e seu tipo de dados será NUMBER. Este VARRAY tem um escopo mais amplo e pode ser usado não apenas dentro do bloco PL/SQL, mas também com outros objetos de esquema.

Como usar o VARRAY criado como objeto de banco de dados?


A vantagem de definir o VARRAY como objeto de banco de dados é que ele pode ser referenciado por qualquer programa que tenha permissão para usá-lo. Você pode usar o VARRAY com tabelas, registros ou até mesmo com blocos PL/SQL.

Vamos fazer o exemplo:

Exemplo 1. Como definir uma coluna de uma tabela usando VARRAY?

CREATE TABLE calendar(
    day_name        VARCHAR2(25),
    day_date        dbObj_vry
);
/

No código acima criamos uma tabela com o nome Calendar que possui duas colunas day_name e day_date. A primeira coluna pode conter dados do tipo de dados VARCHAR2, enquanto a segunda coluna pode conter dados do tipo dbObj_vry, que é um VARRAY.

Informações:O que significa definir uma coluna de uma tabela como tipo VARRAY?
Definir uma coluna de uma tabela como tipo VARRAY significa que ela pode conter um número 'n' de valores nela. Onde 'n' é igual ao limite de tamanho desse varray. No nosso caso, o limite de tamanho de VARRAY é 5, o que significa que a coluna 'Day Date' da tabela Calendar pode conter 5 valores.

Como inserir dados no VARRAY?

INSERT INTO calendar ( day_name, day_date ) 
VALUES ( 'Sunday', dbObj_vry (7, 14, 21, 28) );    

Essa instrução insert DML inserirá uma linha na tabela Calendar. Inserir dados na primeira coluna 'Nome do dia', que é do tipo de dados varchar2, é fácil. Você só precisa escrever os dados desejados e colocá-los entre aspas simples. Mas o mesmo não acontece com a segunda coluna 'Day Date' que é do tipo VARRAY. Para inserir dados na coluna que é do tipo VARRAY, primeiro você deve escrever o nome do varray e fornecer os dados.

Além disso, você tem que ter certeza de quatro coisas
  1. Os dados que você está fornecendo devem estar entre parênteses.
  2. O tipo de dados dos dados deve corresponder ao tipo de dados dos elementos do seu VARRAY, que no nosso caso é NUMBER.
  3. O número de elementos que você está inserindo na coluna deve ser menor ou igual ao limite de tamanho do VARRAY. No nosso caso é 5 e estamos inserindo 4 elementos na coluna que está completamente ok. Mas se suponha que eu insira 6 elementos na coluna, haverá um erro.
  4. Se inserir vários dados na coluna VARRAY, certifique-se de separar os elementos uns dos outros usando ponto e vírgula.

Como recuperar os dados do VARRAY?


Os dados podem ser recuperados usando a instrução SELECT. Qualquer instrução SELECT escrita corretamente fará o trabalho. Por exemplo
SELECT * FROM calendar;

Isso recuperará todos os dados do calendário da tabela.

Caso você queira exibir os dados armazenados na coluna, que contém dados do tipo VARRAY, em um formato relacional, você pode usar a expressão TABLE. Por exemplo
SELECT 
    tab1.day_name, 
    vry.column_value AS "Date"
FROM calendar tab1, TABLE (tab1.day_date) vry;

Esta instrução SELECT mostrará os dados de ambas as colunas em um formato relacional. A expressão TABLE pode abrir a instância da coleção e representar as linhas do objeto em formato relacional.

Como atualizar os dados da coluna do tipo VARRAY?


Atualizar os valores da coluna do tipo VARRAY é bem simples. O exemplo abaixo mostrará como atualizar os valores das colunas day_date.
UPDATE calendar 
SET day_date = dbObj_vry(10,14,21,28) 
WHERE day_name = 'Sunday';

Exemplo 2. Como usar VARRAY com bloco PL/SQL?


No exemplo acima aprendemos como usar o VARRAY que é criado como objeto Database para definir a coluna de uma tabela. Agora veremos como usar o mesmo varray dentro de um bloco PL/SQL.
DECLARE
    vry_obj dbObj_vry    := dbObj_vry();
BEGIN
    FOR i IN 1..vry_obj.LIMIT
    LOOP
        vry_obj.EXTEND; 
        vry_obj(i):= 10*i;
        DBMS_OUTPUT.PUT_LINE(vry_obj(i));    
    END LOOP;
END;
/

Você viu este exemplo no último tutorial. Não há grandes mudanças aqui, exceto que, desta vez, em vez de definir o VARRAY dentro do bloco, nós o criamos como um objeto de banco de dados autônomo. Sugiro que você dê uma olhada no último tutorial onde expliquei o código acima em detalhes.

Esse é o tutorial PL/SQL sobre como criar VARRAY como objeto Database no Oracle. Espero que tenha gostado da leitura, se sim, compartilhe este blog em suas redes sociais com seus amigos. Obrigado e tenha um ótimo dia!