O Oracle PL/SQL possui diferentes tipos de
dados (datatypes) para atender suas necessidades, que são divididos nas
seguintes categorias: CHARACTER, NUMBER, DATE, LOB, BOOLEANOS, TIPOS COMPOSTOS,
TIPOS DE OBJETO e TIPOS DE REFERÊNCIA.
Character
Datatype
Usados para armazenar dados alfanuméricos.
·
CHAR()
armazena string de tamanho
fixo. Tamanho default 1, máximo 32.767.
Subtipo: CHARACTER
·
VARCHAR2() armazena string de tamanho variável. É
possível armazenar string de até 32.767 bytes. Subtipo:
STRING
·
VARCHAR() sinônimo para o tipo VARCHAR2.
·
NCHAR() e NVARCHAR2() possuem as
mesmas características dos tipos CHAR e VARCHAR2 e são usados para armazenar
dados NLS (National Language Support). A arquitetura Oracle NLS permite
armazenar, processar e recuperar informações em linguagens nativas.
·
LONG é um tipo de dados que se tornou “obsoleto”
com a chegada dos tipos LOB (Large Object). O tipo LONG armazena strings de
tamanho variável de no máximo 32.760 bytes.
Numeric
Datatype
Usado para
armazenar dados numéricos com precisão de até 38 digitos.
·
NUMBER(,
) onde
corresponde ao número de dígitos e o número de casas decimais.
Valores inseridos em colunas numéricas com número de casas decimais menor que o
dado inserido serão arredondados. Subtipos: DEC,
DECIMAL, DOUBLE PRECISION, FLOAT, INTEGER, INT, NUMERIC, REAL, SMALLINT.
·
BINARY_INTEGER
utilizado para armazenar
inteiros com sinal, que variam de –2147483647 a 2147483647. Requerem menos memória
que tipos NUMBER. Subtipos: NATURAL (n>=0), NATURALN (n>=0 not null),
POSITIVE (n>0), POSITIVEN (n>0 not null), SIGNTYPE (-1, 0, 1).
·
PLS_INTEGER Possui as mesmas características do tipo
BINARY_INTEGER, entretanto possui melhor performance para cálculos.
Date
Datatype
O tipo DATE permite
valores de data e hora. O formato padrão é definido pelo parâmetro
NLS_DATE_FORMAT. O Oracle armazena internamente a data em formato de número
juliano com a parte fracionária usada para controlar a hora. Uma data Juliana
corresponde ao número de dias desde 1 de Janeiro de 4712 A.C.
Para operações
aritméticas com datas no Oracle, basta adicionar ou subtrair números inteiros
ou fracionários. Por exemplo, SYSDATE + 1 para somar uma dia, 1/24 para
acrescentar uma hora, 1/(24x60) ou 1/1440 para acrescentar 1 minuto e
1/(24x60x60) ou 1/86400 para um segundo.
No Oracle 9i há
também 5 novos tipos de dados para armazenar tipos de data:
·
TIMESTAMP
semelhante ao tipo DATE, com a
diferença de armazenar fração de segundos com precisão de até 9 digitos.
·
TIMESTAMP
WITH TIME ZONE armazena
data/hora com informações de fuso horário.
·
TIMESTAMP
WITH LOCAL TIME ZONE armazena
data/hora no fuso horário do servidor. Quando o usuário seleciona os dados, o
valor é ajustado para as configurações da
sua sessão.
·
INTERVAL
YEAR TO MONTH usado para
armazenar espaço de tempo em anos e meses.
·
INTERVAL
DAY TO SECOND permite
especificar intervalos em dias, horas, minutos e segundos.
LOB Datatypes
Large Object (LOB) datatypes são usado para
armazenar dados não estruturados como imagens, arquivos binários. Os tipos LOBs
podem armazenar até 4GB de informação. A manipulação dos tipos LOB é feita
através da package DBMS_LOB.
|
||
BLOB
|
Binary Large
Object
|
Armazena até 4GB de dados binários no banco
|
CLOB
|
Character
Large Object
|
Armazena até 4GB de dados caráter
|
BFILE
|
Binary File
|
Armazena até 4GB de dados em arquivos binários externos. Uma coluna
BFILE armazena um ponteiro para o arquivo armazenado no sistema operacional.
|
Outros Datatypes
·
RAW é um tipo para dados binários, não
interpretados pelo banco. Podem armazenar até 32.767 bytes de informação e seus
dados não passam por conversão de conjunto de caracteres entre cliente e
servidor.
·
LONGRAW
semelhante ao tipo LONG, é um
tipo de dados “obsoleto” que pode armazenar até 32.760 bytes de dados. Seu uso foi depreciado pelos tipos BLOB e BFILE.
·
ROWID Oracle utiliza o datatype ROWID para armazenar
o endereço de cada linha no banco de dados. Toda tabela contém uma coluna
oculta chamada ROWID que retorna um identificador único do endereço da linha no
banco de dados no formato OOOOOOFFFBBBBBBRRR onde “O” representa o número do
objeto, “F” o número do datafile, “B” a identificação do bloco Oracle e “R” a
identificação da linha no bloco.
·
UROWID Universal ROWID, suporta todos os tipos de
ROWID (físicas ou lógicas) bem como de tabelas não Oracle acessadas através de
gateway.
Tipo booleano
O único tipo de dados na família booleana é o
BOOLEAN. Variáveis booleanas são utilizadas em estruturas de controle da
PL/SQL como as instruções IF-THEN-ELSE e de LOOP. Podem conter apenas os
valores TRUE, FALSE ou NULL.
Tipos
compostos
Os tipos
compostos disponíveis em PL/SQL são registros, tabelas e varrays. Um tipo
composto é um que tem componentes dentro dele. Uma variável do tipo composta
contém uma ou mais variáveis.
Tipos
de referencia
Um tipo
de referência na PL/SQL é semelhante a um ponteiro em C. Uma variável que seja
declarada como um tipo de referência
pode apontar para posições de memória diferentes na vida do programa. Em PL/SQL
usamos os tipos REF e REF CURSOR.
Tipos de objeto
Consiste
em um tipo composto que possui atributos (variáveis de outros tipos) e métodos
(subprogramas) dentro dele.
Nenhum comentário:
Postar um comentário