Oracle Tipos de dados PL/SQL: Booleano, Número, Data [Exemplo]

O que são tipos de dados PL/SQL?

Tipos de dados em PL/SQL são usados ​​para definir como os dados serão armazenados, manipulados e tratados por Oracle durante o armazenamento e processamento de dados. Os tipos de dados estão associados ao formato de armazenamento específico e às restrições de intervalo. Em Oracle, cada valor ou constante é atribuído a um tipo de dados.

A principal diferença entre PL/SQL e SQL tipos de dados são, os tipos de dados SQL são limitados à coluna da tabela, enquanto os tipos de dados PL/SQL são usados ​​no Blocos PL/SQL. Mais sobre isso posteriormente no tutorial.

A seguir está o diagrama de diferentes Oracle Tipos de dados PL/SQL:

Tipos de dados PL/SQL
Diferentes tipos de dados em PL/SQL

Tipo de dados PL/SQL CHARACTER

Este tipo de dados armazena basicamente caracteres alfanuméricos em formato de string.

Os valores literais devem sempre ser colocados entre aspas simples ao serem atribuídos ao tipo de dados CHARACTER.

Este tipo de dados de caractere é ainda classificado da seguinte forma:

  • Tipo de dados CHAR (tamanho de string fixo)
  • VARCHAR2 Tipo de dados (tamanho de string variável)
  • Tipo de dados VARCHAR
  • NCHAR (tamanho de string fixo nativo)
  • NVARCHAR2 (tamanho da string variável nativa)
  • LONGO e LONGO CRU
Tipo de dados Descrição Sintaxe
CARACTERES Este tipo de dados armazena o valor da string, e o tamanho da string é fixo no momento da declaração do variável.

  • Oracle a variável seria preenchida em branco se a variável não ocupasse todo o tamanho que foi declarado para ela, portanto Oracle alocará a memória para o tamanho declarado mesmo que a variável não a ocupe totalmente.
  • A restrição de tamanho para esse tipo de dados é de 1 a 2000 bytes.
  • O tipo de dados CHAR é mais apropriado para uso sempre que o tamanho dos dados for fixo.
grade CHAR;
manager CHAR (10):= 'guru99';

Explicação da sintaxe:

  • A primeira declaração declarou a variável 'grade' do tipo de dados CHAR com tamanho máximo de 1 byte (valor padrão).
  • A segunda declaração declarou a variável 'manager' do tipo de dados CHAR com tamanho máximo de 10 e atribuiu o valor 'guru99' que é de 6 bytes. Oracle alocará a memória de 10 bytes em vez de 6 bytes neste caso.
VARCHAR2 Este tipo de dados armazena a string, mas o comprimento da string não é fixo.

  • A restrição de tamanho para esse tipo de dados é de 1 a 4000 bytes para o tamanho da coluna da tabela e de 1 a 32767 bytes para variáveis.
  • O tamanho é definido para cada variável no momento da declaração da variável.
  • BUT Oracle alocará memória somente depois que a variável for definida, ou seja, Oracle considerará apenas o comprimento real da string armazenada em uma variável para alocação de memória, em vez do tamanho fornecido para uma variável na parte da declaração.
  • É sempre bom usar VARCHAR2 em vez do tipo de dados CHAR para otimizar o uso de memória.
manager VARCHAR2(10) := ‘guru99';

Explicação da sintaxe:

  • A declaração acima declarou a variável 'manager' do tipo de dados VARCHAR2 com tamanho máximo de 10 e atribuiu o valor 'guru99' que é de 6 bytes. Oracle alocará memória de apenas 6 bytes neste caso.
VARCHAR Isso é sinônimo do tipo de dados VARCHAR2.

  • É sempre uma boa prática usar VARCHAR2 em vez de VARCHAR para evitar mudanças comportamentais.
manager VARCHAR(10) := ‘guru99';

Explicação da sintaxe:

  • A declaração acima declarou a variável 'manager' do tipo de dados VARCHAR com tamanho máximo de 10 e atribuiu o valor 'guru99' que é de 6 bytes. Oracle alocará memória de apenas 6 bytes neste caso. (Semelhante a VARCHAR2)
NCHAR Este tipo de dados é igual ao tipo de dados CHAR, mas o conjunto de caracteres será do conjunto de caracteres nacional.

  • Este conjunto de caracteres pode ser definido para a sessão usando NLS_PARAMETERS.
  • O conjunto de caracteres pode ser UTF16 ou UTF8.
  • A restrição de tamanho é de 1 a 2000 bytes.
native NCHAR(10);

Explicação da sintaxe:

  • A declaração acima declara a variável 'nativa' do tipo de dados NCHAR com tamanho máximo de 10.
  • O comprimento desta variável depende do (número de comprimentos) por byte conforme definido no conjunto de caracteres.
NVARCHAR2 Este tipo de dados é igual ao tipo de dados VARCHAR2, mas o conjunto de caracteres será do conjunto de caracteres nacional.

  • Este conjunto de caracteres pode ser definido para a sessão usando NLS_PARAMETERS.
  • O conjunto de caracteres pode ser UTF16 ou UTF8.
  • A restrição de tamanho é de 1 a 4000 bytes.
Native var NVARCHAR2(10):='guru99';

Explicação da sintaxe:

  • A declaração acima declara a variável 'Native_var' do tipo de dados NVARCHAR2 com tamanho máximo de 10.
LONGO e LONGRAW Este tipo de dados é usado para armazenar texto grande ou dados brutos até o tamanho máximo de 2 GB.

  • Eles são usados ​​principalmente no dicionário de dados.
  • O tipo de dados LONG é usado para armazenar dados do conjunto de caracteres, enquanto LONG RAW é usado para armazenar dados em formato binário.
  • O tipo de dados LONG RAW aceita objetos de mídia, imagens, etc. enquanto LONG funciona apenas em dados que podem ser armazenados usando o conjunto de caracteres.
Large_text LONG;
Large_raw LONG RAW;

Explicação da sintaxe:

  • A declaração acima declara a variável 'Large_text' do tipo de dados LONG e 'Large_raw' do tipo de dados LONG RAW.

Nota: O uso do tipo de dados LONG não é recomendado por Oracle. Em vez disso, o tipo de dados LOB deve ser preferido.

Tipo de dados PL/SQL NUMBER

Este tipo de dados armazena números de ponto fixo ou flutuante com até 38 dígitos de precisão. Este tipo de dados é usado para trabalhar com campos que conterão apenas dados numéricos. A variável pode ser declarada com precisão e detalhes de dígitos decimais ou sem esta informação. Os valores não precisam ser colocados entre aspas durante a atribuição para esse tipo de dados.

A NUMBER(8,2);
B NUMBER(8);
C NUMBER;

Explicação da sintaxe:

  • Acima, a primeira declaração declara que a variável 'A' é do tipo de dados numérico com precisão total 8 e dígitos decimais 2.
  • A segunda declaração declara que a variável 'B' é do tipo de dados numérico com precisão total 8 e sem dígitos decimais.
  • A terceira declaração é a mais genérica, declara que a variável 'C' é do tipo de dados numérico sem restrição de precisão ou casas decimais. Pode levar no máximo 38 dígitos.

Tipo de dados PL/SQL BOOLEAN

Este tipo de dados armazena os valores lógicos. Oracle O tipo de dados booleano representa TRUE ou FALSE e é usado principalmente em instruções condicionais. Os valores não precisam ser colocados entre aspas durante a atribuição para esse tipo de dados.

Var1 BOOLEAN;

Explicação da sintaxe:

  • Acima, a variável 'Var1' é declarada como tipo de dados BOOLEAN. A saída do código será verdadeira ou falsa com base no conjunto de condições.

Tipo de dados DATA PL/SQL

Este tipo de dados armazena os valores em formato de data, como data, mês e ano. Sempre que uma variável é definida com o tipo de dados DATE junto com a data, ela pode conter informações de hora e, por padrão, as informações de hora são definidas como 12:00:00, se não forem especificadas. Os valores precisam ser colocados entre aspas durante a atribuição para esse tipo de dados.

A norma Oracle o formato de hora para entrada e saída é 'DD-MON-YY' e é novamente definido como NLS_PARAMETERS (NLS_DATE_FORMAT) no nível da sessão.

newyear DATE:='01-JAN-2015';
current_date DATE:=SYSDATE;

Explicação da sintaxe:

  • Acima, a variável 'ano novo' é declarada como tipo de dados DATE e recebe o valor de 1º de janeirost, data de 2015.
  • A segunda declaração declara a variável data_atual como tipo de dados DATE e atribui o valor com a data atual do sistema.
  • Ambas as variáveis ​​​​contêm as informações de tempo.

Tipo de dados LOB PL/SQL

Este tipo de dados é usado principalmente para armazenar e manipular grandes blocos de dados não estruturados, como imagens, arquivos multimídia, etc. Oracle prefere LOB em vez do tipo de dados LONG, pois é mais flexível que o tipo de dados LONG. A seguir estão algumas das principais vantagens do LOB sobre o tipo de dados LONG.

  • O número de colunas em uma tabela com tipo de dados LONG é limitado a 1, enquanto uma tabela não tem restrição quanto ao número de colunas com tipo de dados LOB.
  • A ferramenta de interface de dados aceita o tipo de dados LOB da tabela durante a replicação de dados, mas omite a coluna LONG da tabela. Essas colunas LONG precisam ser replicadas manualmente.
  • O tamanho da coluna LONG é de 2 GB, enquanto LOB pode armazenar até 128 TB.
  • Oracle está constantemente melhorando o tipo de dados LOB em cada um de seus lançamentos de acordo com os requisitos modernos, enquanto o tipo de dados LONG é constante e não recebe muitas atualizações.

Portanto, é sempre bom usar o tipo de dados LOB em vez do tipo de dados LONG. A seguir estão os diferentes tipos de dados LOB. Eles podem armazenar até 128 terabytes.

  1. BLOB
  2. CLOB e NCLOB
  3. ARQUIVOB
Tipo de dados Descrição Sintaxe
BLOB Este tipo de dados armazena os dados LOB no formato de arquivo binário até o tamanho máximo de 128 TB. Isso não armazena dados com base nos detalhes do conjunto de caracteres, para que possa armazenar dados não estruturados, como objetos multimídia, imagens, etc.
Binary_data BLOB;

Explicação da sintaxe:

  • Acima, a variável 'Binary_data' é declarada como um BLOB.
CLOB e NCLOB O tipo de dados CLOB armazena os dados LOB no conjunto de caracteres, enquanto NCLOB armazena os dados no conjunto de caracteres nativo. Como esses tipos de dados usam armazenamento baseado em conjunto de caracteres, eles não podem armazenar dados como multimídia, imagens, etc., que não podem ser colocados em uma sequência de caracteres. O tamanho máximo desses tipos de dados é 128 TB.
Charac_data CLOB;

Explicação da sintaxe:

  • Acima, a variável 'Charac_data' é declarada como tipo de dados CLOB.
ARQUIVOB
  • BFILE são os tipos de dados que armazenam os dados não estruturados em formato binário fora do banco de dados como um arquivo do sistema operacional.
  • O tamanho do BFILE é para um sistema operacional limitado e eles são arquivos somente leitura e não podem ser modificados.

Resumo

Abordamos os diferentes tipos de dados simples que estão disponíveis em PL/SQL junto com sua sintaxe. Aprenderemos sobre tipos de dados complexos em tópicos posteriores.