Notas del release


43.7 Información sobre tipos de datos

43.7.1 Promoción de tipos de datos

La tabla 5 de este apartado muestra la lista de prioridad para cada tipo de datos. Por favor, tenga en cuenta que:

  1. Para una base de datos Unicode, se considera que los siguientes tipos de datos son equivalentes:
  2. En una base de datos Unicode, es posible crear funciones en las que la única diferencia de la signatura de función se da entre los tipos de datos CHAR y GRAPHIC equivalentes, por ejemplo foo(CHAR(8)) y foo(GRAPHIC(8)). Les recomendamos encarecidamente que no definan tales funciones de duplicación ya que la migración a un futuro release obligará a que uno de ellos se elimine antes de que continúe la migración.

    Si existen dichas funciones duplicadas, la elección de la que se ha de invocar se determina por medio de un algoritmo en dos pases. El primer pase intenta hallar una correspondencia utilizando el mismo algoritmo que se utiliza para resolver funciones en una base de datos no Unicode. Si no se encuentra ninguna correspondencia, se efectuará un segundo pase teniendo en cuenta la prioridad de promoción siguiente para las series CHAR y GRAPHIC:

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

43.7.2 Difusión entre tipos de datos

La entrada siguiente se ha añadido a la lista introducida como: "Se da soporte a las siguientes difusiones que implican tipos diferentes":

Lo que se muestra a continuación son actualizaciones a la "Tabla 6. Difusiones soportadas entre tipos de datos incorporados". Sólo se incluyen las filas afectadas de la tabla.

Tabla 19. Difusiones soportadas entre tipos de datos incorporados

Tipo de datos de destino ->
 
 
 
 
 
 
Tipo de datos fuente 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 Y Y Y Y S1 S1 - -
VARCHAR Y Y Y Y S1 S1 - -
LONGVARCHAR Y Y Y Y - - S1 S1
CLOB Y Y Y Y - - - S1
GRAPHIC S1 S1 - - Y Y Y Y
VARGRAPHIC S1 S1 - - Y Y Y Y
LONGVARGRAPHIC - - S1 S1 Y Y Y Y
DBCLOB - - S2 S1 Y Y Y Y

1
La difusión sólo está soportada para bases de datos Unicode.

2
La difusión sólo está soportada para bases de datos Unicode. Sólo está soportada la difusión explícita.

43.7.3 Asignaciones y comparaciones

Las asignaciones y comparaciones que implican tanto datos de tipo carácter como gráficos sólo están soportadas cuando una de las series es un literal. Para la resolución de funciones, los literales gráficos y los literales de tipo carácter se corresponderán tanto con los parámetros de función gráfica como con los de tipo carácter.

Lo que se muestra a continuación son actualizaciones a la "Tabla 7. Compatibilidad de tipo de datos para asignaciones y comparaciones". Sólo se incluyen las filas afectadas de la tabla y la nueva nota a pie de página 6:

Operandos Entero binario Número decimal Coma flotante Serie de caracteres Serie gráfica Fecha Hora Indic. de la hora Serie binaria UDT
Serie de caracteres No No No 6 1 1 1 No 3 2
Serie gráfica No No No 6 No No No No 2

6
Sólo está soportada para bases de datos Unicode.

43.7.3.1 Asignaciones de serie

Asignación de almacenamiento

El último párrafo de este subapartado se modifica del modo siguiente:

Cuando se asigna una serie a una columna de longitud fija y la longitud de la serie es inferior al atributo de longitud del destino, la serie se rellena a la derecha con el número necesario de blancos de un único byte, de doble byte o UCS-22. El carácter de relleno es siempre un blanco incluso para las columnas que se definen con el atributo FOR BIT DATA.

Asignación de recuperación

El tercer párrafo de este subapartado se modifica del modo siguiente:

Cuando se asigna una serie de caracteres a una variable de longitud fija y la longitud de la serie es inferior al atributo de longitud del destino, la serie se rellena a la derecha con el número necesario de blancos de un único byte, de doble byte o UCS-22. El carácter de relleno es siempre un blanco incluso para las series que se definen con el atributo FOR BIT DATA.

2
UCS-2 define varios caracteres SPACE con propiedades diferentes. Para una base de datos Unicode, el gestor de bases de datos siempre utiliza ASCII SPACE en la posición x'0020' como blanco UCS-2. Para una base de datos EUC, el IDEOGRAPHIC SPACE de la posición x'3000' se utiliza para rellenar gráficos GRAPHIC.

Normas de conversión para asignaciones de serie

Se ha añadido el párrafo siguiente al final de este subapartado:

Para las bases de datos Unicode, las series de caracteres pueden asignarse a una columna gráfica y pueden asignarse series gráficas a una columna de caracteres.

Consideraciones para asignaciones de serie gráfica

El primer párrafo de este subapartado se ha modificado del modo siguiente:

Las asignaciones de serie gráfica se procesan de un modo análogo al de las series de caracteres. Para bases de datos no Unicode, los tipos de datos de serie gráfica son únicamente compatibles con otros tipos de datos de serie gráfica y nunca con tipos de datos numéricos, de serie de caracteres o de fecha y hora. Para bases de datos no Unicode, los tipos de datos de serie gráfica son compatibles con tipos de datos de serie gráfica.

43.7.3.2 Comparaciones de series

Normas de conversión para la comparación

Este subapartado se ha modificado del modo siguiente:

Cuando se comparan dos series, una de las series se convierte en primer lugar, si es necesario, al esquema de codificación y/o página de códigos de la otra serie. Para obtener más detalles, consulte el apartado "Normas para conversiones de serie" del "Capítulo 3. Elementos de lenguaje" del manual Consulta de SQL.

43.7.4 Normas para los tipos de datos de resultado

43.7.4.1 Series de caracteres y de gráficos en una base de datos Unicode

Éste es un subapartado nuevo que se inserta detrás del subapartado "Series gráficas".

En una base de datos Unicode, las series de caracteres y las series gráficas son compatibles.

Si un operando es... Y el otro operando es... El tipo de datos del resultado es...
GRAPHIC(x) CHAR(y) o GRAPHIC(y) GRAPHIC(z) donde z = max(x,y)
VARGRAPHIC(x) CHAR(y) o VARCHAR(y) VARGRAPHIC(z) donde z = max(x,y)
VARCHAR(x) GRAPHIC(y) o VARGRAPHIC VARGRAPHIC(z) donde z = max(x,y)
LONG VARGRAPHIC CHAR(y) o VARCHAR(y) o LONG VARCHAR LONG VARGRAPHIC
LONG VARCHAR GRAPHIC(y) o VARGRAPHIC(y) LONG VARGRAPHIC
DBCLOB(x) CHAR(y) o VARCHAR(y) o CLOB(y) DBCLOB(z) donde z = max(x,y)
DBCLOB(x) LONG VARCHAR DBCLOB(z) donde z = max(x,16350)
CLOB(x) GRAPHIC(y) o VARGRAPHIC(y) DBCLOB(z) donde z = max(x,y)
CLOB(x) LONG VARGRAPHIC DBCLOB(z) donde z = max(x,16350)

43.7.5 Normas para las conversiones de serie

Se ha añadido el tercer punto a la lista siguiente de esta sección:

Para cada par de páginas de códigos, el resultado lo determina la aplicación secuencial de las normas siguientes:

1
En una base de datos no Unicode, no se da soporte a la conversión entre nombres de codificación diferentes.

43.7.6 Expresiones

Se ha añadido lo siguiente:

En una base de datos Unicode, una expresión que acepte una serie de caracteres o gráfica aceptará cualquier tipo de serie para el que se dé soporte a la conversión.

43.7.6.1 Con el operador de concatenación

Se ha añadido lo siguiente al final de este subapartado:

En una base de datos Unicode, la concatenación que implica tanto a los operandos de serie de caracteres como a los operandos de serie gráfica convertirá en primer lugar los operandos de carácter en operandos gráficos. Tenga en cuenta que en una base de datos no Unicode, la concatenación no puede implicar ni a operandos de caracteres ni a gráficos.

43.7.7 Predicados

La entrada siguiente se ha añadido a la lista introducida por la sentencia: "Las normas siguientes se aplican a todos los tipos de predicados":


[ Principio de página | Página anterior | Página siguiente | Contenido | Índice ]