O incio da postagem Tipos de Variáveis esta no link: Parte 1
Variável LOB (Large Objects)
As variáveis do tipo Large objects como o proprio nome sugere possibilitam o armazenamento de grandes informações como imagens, sons, vídeos, arquivos de texto e pdf. Esse tipo de variavel é dividido em 4 subtipos (datatypes): BFILE, BLOB, CLOB e NCLOB
BFILE
Serve apenas para leitura pois armazena tipos de dados binários localizados fora do banco de dados em arquivos do sistema operacional como TXT e HTML. Essa variável deve ser declarada com referencia nula.
Exemplo de declaração da variavel BFILE:
V_TESTE BFILE;
BLOB
A varialvel do tipo BLOB aceita o armazenamento de dados binários de tamanho variável, esse datatype possibilita a leitura e a escrita. É possível especificar o tamanho 8 e 32 terabites. Se o tamanho não for definido será igual a 1 byte.
A escrita e leitura da variável BLOB só pode ser feita dentro de uma transação (bloco anônimo ou nomeada), utilizando o pacote DBMS_LOB.
A declaração da variável BLOB pode ser feita de 3 formas:
- V_TESTE BLOB; -- variável BLOB nula
- V_TESTE BLOB := empty_blob(); -- variável BLOB vazia
- V_TESTE BLOB := '43'||'41'||'52'; --variável BLOB hexadecimal igual a" CAR"
Esse tipo de variável é utilizada principalmente para o armazenamento de imagens grandes ou de filmes.
CLOB
Aceita o armazenamento de dados alfanuméricos, podendo alocar entre 8 e 32 terabites de memoria.
A variável CLOB aceita escrita e leitura porem isso só pode ser feito dentro de uma transação (bloco anônimo ou nomeada), para realizar a leitura de uma coluna do tipo CLOB é preciso utilizar o pacote DBMS_LOB.
A declaração da variável CLOB pode ser feita de 3 formas:
- V_TESTE CLOB; -- variável CLOB nula
- V_TESTE CLOB := empty_clob(); -- variável CLOB vazia
- V_TESTE CLOB := 'CAR'; --variável CLOB igual a" CAR"
NCLOB
São tipos de dados alfanuméricos, podendo armazenar caracteres unicodes alocando entre 8 e 2 terabites de memoria.
A variável NCLOB aceita escrita e leitura porem isso só pode ser feito dentro de uma transação (bloco anônimo ou nomeada), para realizar a leitura de uma coluna do tipo NCLOB é preciso utilizar o pacote DBMS_LOB é recomendável que a leitura ou o armazenamento das variáveis do tipo NCLOB seja realizada em partes caso o contrario pode-se sobrecarregar o sistema.
A declaração da variável NCLOB pode ser feita de 3 formas:
- V_TESTE NCLOB; -- variável CLOB nula
- V_TESTE NCLOB := empty_clob(); -- variável CLOB vazia
- V_TESTE NCLOB := 'CAR'; --variável CLOB igual a" CAR"
Esse tipo de variável é muito utilizado para o armazenamento de grandes textos.
Variável Composta
Uma variável do tipo composta contém uma ou mais variáveis, são formadas por uma ou mais posições (campos ou entradas). Podemos entender este tipo de variável como uma “estrutura” de armazenamento ou matriz. Podem ser registros, tabelas e VARRAYS. Existem dois grupos de datatypes Record and Colectoins (Gravações e Coleções)
RECORD
É um conjunto de elementos semelhantes que podem ser variáveis escalares ( Tipos de Variáveis – Parte 1), é uma estrutura que contem uma lista de variáveis. A definição do tipo de dados de uma variável RECORD pode ser implícita ou explicita.
A declaração do tipo RECORD por der feita da seguinte forma:
Declarar um tipo RECORD para agrupar dados
TYPE nome_tipo IS RECORD (campo[, campo]...);
Pode-se herdar a definição de um registo utilizando o comando %TYPE, desta forma ao referenciar o campo de uma tabela sua variável será do mesmo tipo que o campo.
A definição de variáveis utilizando %TYPE simplifica a manutenção e reduz os impactos de
DECLARE
registo_teste T_TABELA.C_COLUNA%TYPE;
BEGIN
SELECT C_COLUNA INTO registo_teste
FROM T_TABELA WHERE rownum < 2;
END;
Collections podem ser listas ou arrys, a diferença entre elas é que uma array possui um indexador numerado em sequência.
As variáveis COLLECTIONS podem ser divididas em 3 subtipos (datatypes): VARRAY, Tabela aninhada e Array Associativa
VARRAY
A collection do tipo VARRAY deve ser usada quando souber o tamanho máximo que a coleção vai ter antes da declaração, pois essa variável não pode aumentar de tamanho apos ser declarada. A VARRAY é um tipo de objeto e requer construção explicita, pode ficar em 3 estados: definida, inicializada e alocada.
A criação do type VARRAY pode ser feita de duas formas em SQL utilizando o comando DDL, CREATE, ou em Bloco de execução na parte do DECLARE apenas declarando o type deve ser feita da seguinte forma:
- Comando SQL
CREATE or REPLACE TYPE ty_varry_teste as VARRAY(10) of NUMBER;
- Declaração PL/SQL (bloco de execução)
TYPE ty_varry_teste is VARRAY(10) of NUMBER;
Os exemplos acima criam o type ty_varray_teste do tipo escalar NUMBER com 10 posições é possível utilizar qualquer tipo de variável escalar na criação do type. A diferença entre criar um type com comando SQL e com comando PL/SQL é que o segundo o type vai existir apenas em tempo de execução enquanto na primeira o type será criado fisicamente no seu banco de forma que qualquer bloco ou procedimento poderá utilizar o type.
A variável do tipo type ty_varray_teste pode ser declarada de 3 formas como mencionei acima:
- V_TESTE ty_varray_teste; -- variável definida
- V_TESTE ty_varray_teste := ty_varray_teste(); --inicializada porem vazia
- V_TESTE ty_varray_teste :=ty_varray_teste(1,2,3,4,5,null,7,8,9,10); --variável alocada
é possível alocar o espaço de uma variável do tipo VARRAY com NULL, a não ser que na criação do type seja definido como "NOT NULL" como na criação abaixo:
CREATE or REPLACE TYPE ty_varry_teste as VARRAY(10) of NUMBER NOT NULL;
Tabela aninhada
Uma Tabela aninhada deve ser usada quando não souber o tamanho máximo que a coleção vai ter antes de declarar a variável, pois ela pode crescer apos a declaração.
Assim como a VARRAY a tabela aninhada o type pode ser declarado de duas formas em SQL utilizando o comando DDL, CREATE, ou em Bloco de execução na parte do DECLARE apenas declarando o type deve ser feita da seguinte forma:
- Comando SQL
CREATE or REPLACE TYPE ty_tabela_teste as TABLE of NUMBER;
- Declaração PL/SQL (bloco de execução)
TYPE ty_tabela_teste is TABLE of NUMBER;
Os exemplos acima criam o type ty_tabela_teste do tipo escalar NUMBER sem limite de posições é possível utilizar qualquer tipo de variável escalar na criação do type. A diferença entre criar um type com comando SQL e com comando PL/SQL é que o segundo o type vai existir apenas em tempo de execução enquanto na primeira o type será criado fisicamente no seu banco de forma que qualquer bloco ou procedimento poderá utilizar o type. Uma variável do tipo type ty_tabela_teste pode ser declarada de 3 formas:
- V_TESTE ty_tabela_teste; -- variável definida
- V_TESTE ty_tabela_teste := ty_tabela_teste(); --inicializada porem vazia
- V_TESTE ty_tabela_teste := ty_tabela_teste(1,2,3,4,5,null,7,8,9,10); --variável alocada
Array Associativa
É um conjunto de pares de chave e valor, com index povoado esparsamente .Só pode ser declarado no PL/SQL sua declaração pode ser feita da seguinte forma:
- TYPE tabela_teste is TABLE of NUMBER INDEX BY PLS_INTEGER;
A declaração de uma variável do tipo tabela_teste deve ser feita da seguinte forma:
- V_TESTE tabela_teste;
é importante destacar que a declaração do TYPE não limita o tamanho maximo da variável uma vez que ela pode crescer apos sua declaração, e o INDEX não é sequencial e pode ser definido como VARCHAR.
Uma vantagem de utilizar a Array Associativa é que ao deletar uma elemento da array o espaço de memoria que estava alocado é liberado.
Uma vantagem de utilizar a Array Associativa é que ao deletar uma elemento da array o espaço de memoria que estava alocado é liberado.
Nenhum comentário:
Postar um comentário
Deixe aqui sua opinião, duvida ou sugestão!