Notas sobre o Release


42.4 Informações de Tipos de Dados

42.4.1 Promoção de Tipos de Dados

Nesta seção a tabela 5 mostra a lista de precedência para cada tipo de dados. Observe que:

  1. Para um banco de dados Unicode, os seguintes tipos de dados são considerados equivalentes:
  2. Em um banco de dados Unicode, é possível criar funções nas quais a única diferença na assinatura da função está entre os tipos de dados CHAR e GRAPHIC equivalente, por exemplo foo(CHAR(8)) e foo(GRAPHIC(8)). Recomendamos que você não defina tais funções duplicadas, porque a migração para um release futuro precisará que uma delas seja eliminada antes que a migração continue.

    Se essas funções duplicadas existirem, a opção de qual será chamada é determinada por um algoritmo de duas passagens. A primeira passagem tenta localizar uma correspondência utilizando o mesmo algoritmo que é utilizado para resolver funções em um banco de dados não-Unicode. Se nenhuma correspondência for encontrada, então uma segunda passagem será feita levando-se em conta a seguinte precedência de promoção para as cadeias CHAR e GRAPHIC:

    GRAPHIC-->CHAR-->VARGRAPHIC-->VARCHAR-->LONG VARGRAPHIC-->LONG
    VARCHAR-->DBCLOB-->CLOB
    

42.4.2 Conversão Entre Tipos de Dados

A seguinte entrada foi incluída na lista introduzida como: "As seguintes conversões que envolvem tipos distintos são suportadas":

A seguir, atualizações para a "Tabela 6. Conversões Suportadas Entre Tipos de Dados Internos". Somente as linhas afetadas da tabela são incluídas.

Tabela 17. Conversões suportadas entre Tipos de Dados Internos
Tipo de Dados de


Destino >
 
 
 
 
 
 
Tipo de Dados Fonte V

C
H
A
R
V
A
R
C
H
A
R
L
O
N
G
V
A
R
C
H
A
R
C
L
O
B
G
R
A
P
H
I
C
V
A
R
G
R
A
P
H
I
C
L
O
N
G
V
A
R
G
R
A
P
H
I
C
D
B
C
L
O
B
CHAR S S S S S1 S1 - -
VARCHAR S S S S S1 S1 - -
LONGVARCHAR S S S S - - S1 S1
CLOB S S S S - - - S1
GRAPHIC S1 S1 - - S S S S
VARGRAPHIC S1 S1 - - S S S S
LONGVARGRAPHIC - - S1 S1 S S S S
DBCLOB - - - S1 S S S S

1
A conversão é suportada somente para bancos de dados Unicode.

42.4.3 Atribuições e Comparações

Atribuições e comparações que envolvem dados de caractere e dados gráficos são somente suportadas quando uma das cadeias é um literal. Para a resolução da função, os literais gráficos e de caractere corresponderão aos parâmetros da função de caractere e gráfica.

A seguir, atualizações para a "Tabela 7. Compatibilidade de Tipos de Dados para Atribuições e Comparações". Somente as linhas afetadas da tabela e a nova nota de rodapé 6 foram incluídas:
Operandos Inteiro Binário Número Decimal Ponto Flutuante Cadeia de Caracteres Cadeia Gráfica Data Hora Regis-
tro de Tempo
Cadeia Binária UDT
Cadeia de Caracteres Não Não Não Sim Sim 6 1 1 1 Não 3 2
Cadeia Gráfica Não Não Não Sim 6 Sim Não Não Não Não 2

6
Somente suportada para bancos de dados Unicode.

42.4.3.1 Atribuições de Cadeia

Atribuição de Armazenamento

O último parágrafo desta subseção foi modificado desta forma:

Quando uma cadeia é atribuída a uma coluna de comprimento fixo e o comprimento da cadeia é menor que o atributo de comprimento do destino, a cadeia é preenchida à direita com o número necessário de espaços brancos de byte simples, byte duplo ou UCS-22. O caractere de enchimento é sempre um espaço branco para as colunas definidas com o atributo FOR BIT DATA.

Atribuição de Recuperação

O terceiro parágrafo desta subseção foi modificado desta forma:

Quando uma cadeia de caracteres é atribuída a uma variável de comprimento fixo e o comprimento da cadeia é menor que o atributo de comprimento do destino, a cadeia é preenchida à direita com o número necessário de espaços brancos de byte simples, byte duplo ou UCS-22. O caractere de enchimento é sempre um espaço branco mesmo para as cadeias definidas com o atributo FOR BIT DATA.

2
O UCS-2 define vários caracteres SPACE com propriedades diferentes. Para um banco de dados Unicode, o gerenciador de banco de dados sempre usa ASCII SPACE na posição x'0020' como espaço branco UCS-2. Para um banco de dados EUC, IDEOGRAPHIC SPACE na posição x'3000' é utilizado para preencher as cadeias GRAPHIC.

Regras de Conversão para Atribuições de Cadeia

O seguinte parágrafo foi incluído no final desta subseção:

Para bancos de dados Unicode, cadeias de caracteres podem ser atribuídas a uma coluna gráfica e cadeias gráficas podem ser atribuídas a uma coluna de caracteres.

Considerações DBCS para Atribuições de Cadeia Gráfica

O primeiro parágrafo desta subseção foi modificado desta forma:

As atribuições de cadeia gráfica são processadas de maneira análoga àquela feita para cadeias de caracteres. Para bancos de dados não-Unicode, os tipos de dados da cadeia gráfica são compatíveis somente com outros tipos de dados da cadeia gráfica e nunca com tipos de dados numéricos, da cadeia de caracteres ou de data/hora. Para bancos de dados Unicode, os tipos de dados da cadeia gráfica são compatíveis com os tipos de dados da cadeia de caracteres.

42.4.3.2 Comparações de Cadeias

Regras de Conversão para Comparação

Esta subseção foi modificada desta forma:

Quando duas cadeias são comparadas, uma delas é convertida primeiro, se necessário, para o esquema de codificação e página de códigos da outra cadeia. Para obter detalhes, consulte a seção "Regras para Conversões de Cadeias" do "Capítulo 3. Elementos de Linguagem" na seção SQL Reference.

42.4.4 Regras para Tipos de Dados de Resultado

42.4.4.1 Cadeias de Caracteres e Gráficas em um Banco de Dados Unicode

Esta é uma nova subseção inserida após a subseção "Cadeias Gráficas".

Em um banco de dados Unicode, as cadeias de caracteres e as cadeias gráficas são compatíveis.
Se um operando for... E o outro operando for... O tipo de dados do resultado será...
GRAPHIC(x) CHAR(y) ou GRAPHIC(y) GRAPHIC(z) em que z = max(x,y)
VARGRAPHIC(x) CHAR(y) ou VARCHAR(y) VARGRAPHIC(z) em que z = max(x,y)
VARCHAR(x) GRAPHIC(y) ou VARGRAPHIC VARGRAPHIC(z) em que z = max(x,y)
LONG VARGRAPHIC CHAR(y) ou VARCHAR(y) ou LONG VARCHAR LONG VARGRAPHIC
LONG VARCHAR GRAPHIC(y) ou VARGRAPHIC(y) LONG VARGRAPHIC
DBCLOB(x) CHAR(y) ou VARCHAR(y) ou CLOB(y) DBCLOB(z) em que z = max(x,y)
DBCLOB(x) LONG VARCHAR DBCLOB(z) em que z = max(x,16350)
CLOB(x) GRAPHIC(y) ou VARGRAPHIC(y) DBCLOB(z) em que z = max(x,y)
CLOB(x) LONG VARGRAPHIC DBCLOB(z) em que z = max(x,16350)

42.4.5 Regras para Conversões de Cadeias

O terceiro ponto foi incluído na seguinte lista dessa seção:

Para cada par de páginas de código, o resultado é determinado pelo aplicativo seqüencial das seguintes regras:

1
Em um banco de dados não-Unicode, a conversão entre esquemas de codificação diferentes não é suportada.

42.4.6 Expressões

O seguinte foi incluído:

Em um banco de dados Unicode, uma expressão que aceita uma cadeia de caracteres ou gráfica aceitará todos os tipos de cadeia na quais a conversão é suportada.

42.4.6.1 Com o Operador de Concatenação

O seguinte foi incluído no final desta subseção:

Em um banco de dados Unicode, a concatenação que envolve operandos da cadeia de caracteres e da cadeia gráfica converterão primeiro os operandos de caractere para operandos gráficos. Observe que em um banco de dados Unicode, a concatenação não envolve operandos de caractere e gráficos.

42.4.7 Predicados

A seguinte entrada foi incluída na lista introduzida pela sentença: "As seguintes regras aplicam-se a todos os tipos de predicados":


[ Início da Página | Página Anterior | Próxima Página | Índice | Índice Remissivo ]