Usar tablas temporales DBMS como archivos HOLD

En esta sección:

Cómo:

Referencia:

Puede crear un archivo de salida de informe (es decir, un archivo HOLD) como una tabla temporal DBMS. Con esto consigue un mayor rendimiento ya que se realiza la operación de informe completa en el servidor DBMS en lugar de descargar datos a su ordenador y después nuevamente al servidor DBMS.

Por ejemplo, si en su proceso almacena salida de un informe para uso inmediato por parte de otro procedimiento, al almacenarlo como una tabla temporal en lugar de crear un archivo HOLD rutinario, evitará la carga adicional de transmitir datos intermedios a su ordenador.

Las columnas de tablas temporales se crean a partir de los siguientes elementos del informe

excepto para aquellos en los que se ha especificado NOPRINT.

La tabla temporal que ha creado desde su informe será del mismo tipo de origen de datos (o sea, del mismo DBMS) que el origen de datos del cual ha ejecutado su informe. Si el origen de datos del que ha ejecutado el informe contiene múltiples tablas, todas deberán ser del mismo tipo de origen de datos y deberán residir en el mismo lugar del servidor DBMS.

Puede elegir entre varios tipos de tabla.

Podrá crear archivos de extracción como tablas DBMS nativas con los siguientes adaptadores:


Principio de página

x
Sintaxis: Cómo Guardar salida de un informe como una tabla temporal nativa usando comandos

La sintaxis que se usa para guardar la salida de un informe como una tabla temporal nativa de DBMS es

ON TABLE HOLD [AS filename] FORMAT SAME_DB [PERSISTENCE persistValue]

donde:

filename
Especifica el nombre del archivo HOLD. Si omite AS filename, el nombre de la tabla temporal vuelve a "HOLD".

Puesto que cada comando HOLD posterior reemplaza al archivo HOLD anterior, se recomienda especificar un nombre en cada solicitud para dirigir los datos extraídos a un archivo separado y así evitar que un archivo posterior reemplace a uno anterior.

PERSISTENCE
Indica el tipo de persistencia de tabla y las propiedades de tabla relacionadas. Esto es opcional de los DBMS que admitan tablas volátiles; para todos los demás es obligatorio. Para más información sobre el soporte de tablas volátiles en un DBMS concreto, consulte Propiedades de tablas temporales para valores persistentes SAME_DB y la documentación de su proveedor de DBMS.
persistValue
Es uno de los siguientes:
VOLATILE
Indica que la tabla es local con respecto a la sesión DBMS. Se genera un sinónimo temporal (un archivo máster y un archivo de acceso) automáticamente. Éste caduca cuando acaba la sesión de servidor.

Esta es la propiedad de persistencia predeterminada para todos los DBMS que admitan tablas volátiles.

Para más información sobre el soporte para la propiedad de volatilidad y sobre la persistencia y otras propiedades de la tabla para un DBMS en particular, consulte Propiedades de tablas temporales para valores persistentes SAME_DB y la documentación del proveedor de su DBMS.

GLOBAL_TEMPORARY
Indica que mientras exista la tabla, su definición será visible para otras sesiones de base de datos y usuarios, no así sus datos. Se genera un sinónimo permanente (un archivo máster y un archivo de acceso) automáticamente.

Para más información sobre el soporte para la propiedad temporal global y sobre la persistencia y otras propiedades de la tabla para un DBMS determinado, consulte Propiedades de tablas temporales para valores persistentes SAME_DB y la documentación del proveedor de su DBMS.

PERMANENT
Indica que se creará una tabla regular permanente. Se genera un sinónimo permanente (un archivo máster y un archivo de acceso) automáticamente.

Principio de página

x
Referencia: Propiedades de tablas temporales para valores persistentes SAME_DB

El gráfico a continuación le ofrecerá información más detallada sobre la persistencia y otras propiedades de las tablas temporales de diferentes tipos de origen de datos que se pueden usar con el formato HOLD SAME_DB.

DBMS

VOLATILE

GLOBAL_TEMPORARY

DB2

DB2 en UNIX, Windows y DB2 para z/OS: una tabla volátil se crea usando el comando DECLARE GLOBAL TEMPORARY TABLE con la opción ON COMMIT PRESERVE ROWS. Las tablas temporales globales persisten y son visibles solo dentro de la sesión actual (conexión). SESSION es el nombre esquemático para todas las tablas temporales globales declaradas.

DB2 versión 7.1 y mayor para z/OS solamente: una tabla temporal global se crea usando el comando CREATE GLOBAL TEMPORARY TABLE. La definición de una tabla temporal global es visible para otras sesiones pero los datos no lo son. Los datos se borran al final de cada transacción (comando COMMIT o ROLLBACK). La definición de la tabla continúa después de terminar la sesión.

Informix

Una tabla volátil se crea usando el comando CREATE TEMP TABLE con la opción WITH NO LOG. La definición y los datos continúan, y son visibles, solamente dentro de la propia sesión.

Este tipo de tabla no se puede usar en Informix.

Microsoft SQL Server

Una tabla volátil se crea como una tabla temporal local con el prefijo de un solo símbolo numérico (#) antes del nombre. Por lo tanto, el nombre de la tabla volátil usado como un archivo HOLD es el nombre especificado por la frase HOLD, con el prefijo de símbolo numérico (#). La definición de tabla y los datos son persistentes y visibles únicamente en la sesión actual.

El nombre de una tabla temporal global tiene como prefijo dos símbolos numéricos (##). Por lo tanto, el nombre de una tabla temporal global usado como un archivo HOLD es el nombre especificado por la frase HOLD, con el prefijo de dos símbolos numéricos (##). La tabla queda abandonada automáticamente cuando termina la sesión que la creó y las otras tareas han dejado de referirse a ella. La definición de la tabla y los datos son visibles en otras sesiones.

MySQL

Se crea una tabla volátil usando el comando CREATE TEMPORARY TABLE. La tabla temporal persiste y solo es visible dentro de la sesión actual (conexión). Si una tabla temporal tiene el mismo nombre que una tabla permanente, la tabla permanente se hace invisible.

Este tipo de tabla no está admitida por MySQL.

Oracle

Oracle no admite este tipo de tabla.

La definición de la tabla es visible en todas las sesiones. Sus datos sólo son visibles en la sesión que inserta datos en ella. La definición de la tabla persiste durante el mismo periodo que la definición de una tabla normal.

Teradata

Una definición de tabla volátil y sus datos son visibles solamente desde la sesión que creó la tabla e insertó los datos. La tabla volátil se crea con la opción ON COMMIT PRESERVE ROWS.

Una tabla temporal global se mantiene durante el mismo periodo de tiempo que una tabla permanente. La definición es visible desde todas las sesiones, pero los datos solamente son visibles desde la se La tabla temporal global se crea con la opción ON COMMIT PRESERVE ROWS.



x
Nombres de columna en el archivo HOLD

Se asigna un nombre a cada columna del archivo HOLD:

  1. Obtenido del nombre AS especificado para la columna en la solicitud de informe.
  2. Si no se ha especificado ningún nombre AS, el nombre se asigna a partir del alias especificado en el sinónimo. (El alias es idéntico al nombre de la columna en la tabla relacional original).
  3. En todos los demás casos, el nombre se asigna a partir del nombre de campo según esté especificado en el sinónimo.

Principio de página

x
Claves primarias e índices en el archivo HOLD

Se crea una clave primaria o un índice para la tabla HOLD. La definición de la clave o índice se genera a partir de las claves de clasificación (BY) del comando TABLE, excepto en el caso de claves de clasificación no visibles (o sea, las claves de clasificación en las que se haya especificado NOPRINT). Para determinar si se va a crear una clave primaria o un índice:

  1. Si estas claves de clasificación proporcionan unicidad y no permiten valores nulos (es decir, si la columna del atributo MISSING no está seleccionada o se encuentra desactivada, en el sinónimo) y el DBMS admite claves primarias en el tipo de tabla que se está creando, se genera una clave primaria.
  2. Si estas claves de clasificación aportan unicidad, pero
    1. algunas de las columnas permiten valores nulos, y.
    2. el DBMS no admite claves primarias en el tipo de tabla que se está creando, se crea un índice único.
  3. Si estas claves de clasificación no aportan unicidad, se crea un índice no único.
  4. Si no aparecen claves de clasificación (o sea, no hay claves de clasificación en las que no se ha especificado NOPRINT), no se crea una clave primaria, ni tampoco un índice.

WebFOCUS