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

⚡ Resumo Inteligente

Os tipos de dados PL/SQL definem como Oracle Armazena, manipula e restringe cada valor em um bloco. Agrupa-se em famílias de caracteres, números, booleanos, datas e objetos grandes (LOB), cada uma com seu próprio formato de armazenamento, limites de tamanho e regras de atribuição.

  • 🔤 Personagem: CHAR tem comprimento fixo, VARCHAR2 tem comprimento variável, e NCHAR e NVARCHAR2 usam o conjunto de caracteres nacional.
  • 🔢 Número: A função NUMBER armazena valores de ponto fixo ou flutuante com até 38 dígitos de precisão.
  • Boleano: Retorna VERDADEIRO ou FALSO e é usado principalmente em lógica condicional.
  • 📅 Data: Armazena a data e a hora, assumindo por padrão a meia-noite quando nenhuma hora é especificada.
  • 🗂️ LOB: Os tipos de dados BLOB, CLOB, NCLOB e BFILE armazenam grandes volumes de dados não estruturados, com capacidade de até 128 TB.
  • 💡 Melhor Prática: Prefira VARCHAR2 a CHAR e LOB a LONG para economizar memória e garantir compatibilidade futura.
  • 🔗 Escopo: Os tipos SQL aplicam-se às colunas da tabela; os tipos PL/SQL são usados ​​dentro de blocos PL/SQL.

Oracle Tipos de dados PL/SQL

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

Tipos de dados Em PL/SQL, define-se como os dados serão armazenados, manipulados e tratados. Oracle Durante o armazenamento e processamento, os tipos de dados são associados a um formato de armazenamento específico e a restrições de intervalo. OracleA cada valor ou constante é atribuído um tipo de dados.

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

Segue abaixo um diagrama dos diferentes Oracle Tipos de dados PL/SQL:

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

Tipo de dados PL/SQL CHARACTER

Este tipo de dados armazena caracteres alfanuméricos em formato de string. Os valores literais devem sempre ser colocados entre aspas simples ao serem atribuídos a um tipo de dados CHARACTER.

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

  • Tipo de dados CHAR (tamanho de string fixo)
  • Tipo de dados VARCHAR2 (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 um valor de string, e o tamanho da string é fixo no momento da declaração. variável.

  • Oracle preenche a variável com espaços em branco se ela não ocupar todo o tamanho declarado, portanto Oracle Aloca memória para o tamanho declarado, mesmo que a variável não a preencha completamente.
  • A restrição de tamanho é de 1 a 2000 bytes.
  • O tipo de dado CHAR é mais apropriado sempre que se trabalha com dados de tamanho fixo.
grade CHAR;
manager CHAR (10):= 'guru99';

Explicação da sintaxe:

  • A primeira declaração define a variável 'grade' do tipo de dados CHAR com o tamanho máximo de 1 byte (valor padrão).
  • A segunda instrução declara a variável 'manager' do tipo de dados CHAR com um tamanho máximo de 10 e atribui o valor 'guru99', que corresponde a 6 bytes. Oracle Neste caso, aloca 10 bytes em vez de 6.
VARCHAR2 Este tipo de dado armazena uma string, mas o comprimento não é fixo.

  • A restrição de tamanho é de 1 a 4000 bytes para uma coluna de tabela e de 1 a 32767 bytes para uma variável.
  • O tamanho é definido para cada variável no momento da declaração.
  • Oracle A alocação de memória ocorre somente após a definição da variável, portanto, utiliza o comprimento real da string armazenada em vez do tamanho declarado.
  • É sempre recomendável usar VARCHAR2 em vez de CHAR para otimizar o uso da memória.
manager VARCHAR2(10) := 'guru99';

Explicação da sintaxe:

  • A instrução declara a variável 'manager' do tipo de dados VARCHAR2 com um tamanho máximo de 10 e atribui o valor 'guru99', que corresponde a 6 bytes. Oracle Aloca apenas 6 bytes de memória aqui.
VARCHAR Isso é sinônimo do tipo de dados VARCHAR2.

  • É sempre uma boa prática usar VARCHAR2 em vez de VARCHAR para evitar alterações de comportamento.
manager VARCHAR(10) := 'guru99';

Explicação da sintaxe:

  • A instrução declara a variável 'manager' do tipo de dados VARCHAR com um tamanho máximo de 10 e atribui o valor 'guru99', com 6 bytes. Oracle Aloca apenas 6 bytes, semelhante ao VARCHAR2.
NCHAR Esse tipo de dados é o mesmo que CHAR, mas o conjunto de caracteres é o 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 define a variável 'native' do tipo de dados NCHAR com um tamanho máximo de 10.
  • O comprimento depende do número de bytes por caractere definido no conjunto de caracteres.
NVARCHAR2 Esse tipo de dados é o mesmo que VARCHAR2, mas o conjunto de caracteres é o 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 define a variável 'Native_var' do tipo de dados NVARCHAR2 com um tamanho máximo de 10.
LONGO e LONGO CRU Este tipo de dados armazena textos grandes ou dados brutos com um tamanho máximo de 2 GB.

  • Eles são usados ​​principalmente no dicionário de dados.
  • LONG armazena dados em formato de conjunto de caracteres, enquanto LONG RAW armazena dados em formato binário.
  • LONG RAW aceita objetos de mídia e imagens, enquanto LONG funciona apenas com dados que podem ser armazenados usando um conjunto de caracteres.
Large_text LONG;
Large_raw LONG RAW;

Explicação da sintaxe:

  • A declaração declara 'Large_text' como sendo do tipo de dados LONG e 'Large_raw' como sendo do tipo de dados LONG RAW.

Observação: O uso do tipo de dados LONG não é recomendado por OracleO 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. É usado para trabalhar com campos que contêm apenas dados numéricos. A variável pode ser declarada com ou sem detalhes de precisão e casas decimais. Os valores não precisam estar entre aspas quando atribuídos.

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

Explicação da sintaxe:

  • A primeira declaração declara a variável 'A' do tipo de dados numérico com precisão total de 8 e 2 dígitos decimais.
  • A segunda declaração define 'B' como um tipo de dados numérico com precisão total de 8 e sem casas decimais.
  • A terceira é a mais genérica, declarando 'C' como tipo de dados numéricos, sem restrição de precisão ou casas decimais. Ela pode conter até 38 dígitos.

Tipo de dados PL/SQL BOOLEAN

Este tipo de dados armazena valores lógicos. Oracle O tipo de dados booleano representa VERDADEIRO ou FALSO e é usado principalmente em instruções condicionais. Os valores não precisam estar entre aspas quando atribuídos.

Var1 BOOLEAN;

Explicação da sintaxe:

  • A variável 'Var1' foi declarada como do tipo de dados BOOLEAN. O resultado será verdadeiro ou falso, dependendo da condição definida.

Tipo de dados DATA PL/SQL

Este tipo de dados armazena valores no formato de data, como dia, mês e ano. Sempre que uma variável é definida com o tipo de dados DATE, ela pode armazenar informações de hora; por padrão, a hora é definida como 12:00:00 se não for especificada. Os valores precisam estar entre aspas quando atribuídos.

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

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

Explicação da sintaxe:

  • A variável 'newyear' foi declarada como do tipo de dados DATE e recebeu o valor de 1 de janeiro de 2015.
  • A segunda declaração declara 'current_date' como um tipo de dados DATE e atribui a data atual do sistema.
  • Ambas as variáveis ​​contêm informações temporais.

Tipo de dados LOB PL/SQL

Esse tipo de dado é usado principalmente para armazenar e manipular grandes blocos de dados não estruturados, como imagens e arquivos multimídia. Oracle O tipo de dados LOB é preferido ao tipo LONG por ser mais flexível. As principais vantagens do LOB sobre o LONG são:

  • Uma tabela é limitada a uma coluna LONG, enquanto não há restrição quanto ao número de colunas LOB.
  • As ferramentas de interface de dados aceitam LOB durante a replicação, mas omitem colunas LONG, que devem ser replicadas manualmente.
  • Uma coluna LONG armazena até 2 GB, enquanto uma coluna LOB pode armazenar até 128 TB.
  • Oracle O sistema continua aprimorando o tipo de dados LOB a cada versão, enquanto o tipo LONG permanece praticamente inalterado.

Portanto, é sempre recomendável usar o tipo de dados LOB em vez de LONG. Os diferentes tipos de dados LOB abaixo 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 dados LOB em formato de arquivo binário até um máximo de 128 TB. Ele não armazena dados com base em detalhes de conjunto de caracteres, portanto, pode armazenar dados não estruturados, como objetos multimídia e imagens.
Binary_data BLOB;

Explicação da sintaxe:

  • A variável 'Binary_data' foi declarada como um BLOB.
CLOB e NCLOB O formato CLOB armazena dados LOB no conjunto de caracteres, enquanto o NCLOB armazena dados no conjunto de caracteres nativo. Como utilizam armazenamento baseado em conjunto de caracteres, não podem armazenar dados como multimídia ou imagens. O tamanho máximo é de 128 TB.
Charac_data CLOB;

Explicação da sintaxe:

  • A variável 'Charac_data' foi declarada como do tipo de dados CLOB.
ARQUIVOB
  • O BFILE armazena dados binários não estruturados fora do banco de dados como um arquivo do sistema operacional.
  • O tamanho de um arquivo BFILE é limitado pelo sistema operacional, e os arquivos são somente leitura e não podem ser modificados.

Perguntas Frequentes

O tipo CHAR tem comprimento fixo e preenche com espaços em branco até atingir o tamanho declarado, desperdiçando espaço com valores curtos. Já o tipo VARCHAR2 tem comprimento variável e armazena apenas os caracteres reais, sendo, portanto, preferido para a maioria das colunas de texto.

O formato LOB permite várias colunas por tabela, armazena até 128 TB e continua a ser aprimorado a cada versão. O formato LONG é limitado a uma coluna, tem um limite de 2 GB e é mantido principalmente para fins de compatibilidade com versões anteriores.

Não presente em versões anteriores. BOOLEAN era um tipo exclusivo do PL/SQL, portanto, as colunas da tabela usavam um indicador NUMBER ou CHAR em seu lugar. Ele é usado diretamente dentro de blocos para lógica condicional.

Sim. Ao analisar os valores de amostra em termos de comprimento, intervalo e formato, a IA pode sugerir VARCHAR2, NUMBER, DATE ou LOB e sinalizar colunas com tamanho excessivo. Confirme a escolha com dados futuros.

Sim. O formato DATE armazena século, ano, mês, dia, hora, minuto e segundo. Se nenhum horário for especificado, o padrão é meia-noite. Para frações de segundo ou fusos horários, use o formato TIMESTAMP.

Resuma esta postagem com: