referencia-tabla

Una referencia-tabla especifica una tabla resultante intermedia.

Leer el esquema de sintaxisOmitir el esquema de sintaxis visualreferencia-tabla-únicareferencia-vista-únicareferencia-apodo-únicasolo-referencia-tablareferencia-tabla-exteriorexpresión-tabla_analyzeexpresión-tabla-anidadareferencia-tabla-cambio-datosreferencia-función-tablatabla-derivada-colecciónexpresión-xmltabletabla-unida1referencia-tabla-externa
referencia-tabla-exclusiva
Leer el esquema de sintaxisOmitir el esquema de sintaxis visualnombre-tabla especificación-período cláusula-correlación cláusula-ejemplo-tabla
referencia-vista-exclusiva
Leer el esquema de sintaxisOmitir el esquema de sintaxis visualnombre-vista especificación-período cláusula-correlación
referencia-apodo-exclusiva
Leer el esquema de sintaxisOmitir el esquema de sintaxis visualapodo cláusula-correlación
referencia-tabla-solamente
Leer el esquema de sintaxisOmitir el esquema de sintaxis visualONLY( nombre-tablanombre-vista ) cláusula-correlación
referencia-tabla-externa
Leer el esquema de sintaxisOmitir el esquema de sintaxis visualOUTER( nombre-tablanombre-vista ) cláusula-correlación
expresión-tabla_analyze
Leer el esquema de sintaxisOmitir el esquema de sintaxis visualnombre-tablanombre-vistaANALYZE_TABLE(cláusula-implementación )
expresión-tabla-anidada
Leer el esquema de sintaxisOmitir el esquema de sintaxis visual LATERAL2manejador-continuoWITHIN (selección-completa) cláusula-correlación
referencia-tabla-cambio-datos
Leer el esquema de sintaxisOmitir el esquema de sintaxis visual FINALNEWTABLE(sentencia-insert)FINALNEWOLDTABLE(sentencia-update-buscada)OLD TABLE(sentencia-delete-suprimida) cláusula-correlación
referencia-función-tabla
Leer el esquema de sintaxisOmitir el esquema de sintaxis visualTABLE( nombre-función(,expresión)cláusula-cardinalidad-UDF-tabla) cláusula-correlacióncláusula-correlación-con-tipo3
tabla-derivada-colección
Leer el esquema de sintaxisOmitir el esquema de sintaxis visualfunción-tabla-UNNEST WITH ORDINALITY4 cláusula-correlación
expresión-xmltable
Leer el esquema de sintaxisOmitir el esquema de sintaxis visual función-xmltable5 cláusula-correlación
referencia-tabla-externa
Leer el esquema de sintaxisOmitir el esquema de sintaxis visual EXTERNAL nombre-archivo (,definición-columna)LIKEnombre-tabla1nombre-vistaapodo6 USING (,opciónvalor-opción)
especificación-período
Leer el esquema de sintaxisOmitir el esquema de sintaxis visualFOR SYSTEM_TIMEBUSINESS_TIME AS OFvalorFROMvalor1TOvalor2BETWEENvalor1ANDvalor2
cláusula-correlación
Leer el esquema de sintaxisOmitir el esquema de sintaxis visualASnombre-correlación (,nombre-columna)
cláusula-ejemplo-tabla
Leer el esquema de sintaxisOmitir el esquema de sintaxis visualTABLESAMPLEBERNOULLISYSTEM(expresión-numérica1) REPEATABLE(numeric-expression2)
cláusula-implementación
Leer el esquema de sintaxisOmitir el esquema de sintaxis visualIMPLEMENTATION'serie '
manejador-continuo
Leer el esquema de sintaxisOmitir el esquema de sintaxis visualRETURN DATA UNTIL ,valor-condición-específica
cláusula-cardinalidad-UDF-tabla
Leer el esquema de sintaxisOmitir el esquema de sintaxis visual CARDINALITYconstante-enteraCARDINALITY MULTIPLIERcontante-numérica
cláusula-correlación-con-tipo
Leer el esquema de sintaxisOmitir el esquema de sintaxis visualASnombre-correlación (,nombre-columnatipo-datos)
valor-condición-específica
Leer el esquema de sintaxisOmitir el esquema de sintaxis visualFEDERATED SQLSTATEVALUEconstante-serie SQLCODE,constante-entera
definición-columna
Leer el esquema de sintaxisOmitir el esquema de sintaxis visual nombre-columna tipo-incorporado7 NOT NULL
tipo-incorporado
Leer el esquema de sintaxisOmitir el esquema de sintaxis visualSMALLINTINTEGERINTBIGINTDECIMALDECNUMERICNUM(5,0)( entero-precisión,0, entero-escala)FLOAT(53)( entero)REALDOUBLEPRECISIONDECFLOAT(34)(16)CHARACTERCHAR(1)( enteroOCTETSCODEUNITS32)VARCHARCHARACTERCHARVARYING( enteroOCTETSCODEUNITS32)FOR BIT DATACLOBCHARACTERCHARLARGE OBJECT(65535)( enteroKOCTETSCODEUNITS32)GRAPHIC(1)( enteroCODEUNITS16CODEUNITS32)VARGRAPHIC( enteroCODEUNITS16CODEUNITS32)DBCLOB(32767)( enteroKCODEUNITS16CODEUNITS32)NCHARNATIONALCHARCHARACTER(1)( entero)NVARCHARNCHAR VARYINGNATIONALCHARCHARACTERVARYING( entero)NCLOBNCHAR LARGE OBJECTNATIONAL CHARACTER LARGE OBJECT(16383)( enteroK)BINARY(1)( entero)VARBINARYBINARY VARYING(entero)BLOBBINARY LARGE OBJECT(65535)( enteroK)DATETIMETIMESTAMP(6)(entero)BOOLEAN
Notas:
  • 1 La sintaxis de una tabla-unida se analiza en un tema independiente, consulte tabla-unida.
  • 2 Puede especificarse TABLE en lugar de LATERAL.
  • 3 La cláusula-correlación-con-tipo es obligatoria para las funciones de tabla genéricas. Esta cláusula no puede especificarse para cualquier otra función de tabla.
  • 4 WITH ORDINALITY solo se puede especificar si el argumento de la función de tabla UNNEST es una o más variables de matriz común o funciones con tipos de retorno de matriz común; no se puede especificar una variable de matriz asociativa o una función con un tipo de retorno de matriz asociativa (SQLSTATE 428HT).
  • 5 Una función XMLTABLE puede formar parte de una referencia de tabla. En este caso, las subexpresiones de la expresión XMLTABLE se encuentran en el ámbito de variables de un rango anterior de la cláusula FROM. Para obtener más información, consulte la descripción de XMLTABLE.
  • 6 No es obligatorio especificar una cláusula LIKE o al menos una definición de columna para una sentencia INSERT INTO <table> SELECT FROM que actúa como una cláusula LIKE implícita en relación con la tabla de destino INSERT.
  • 7 La sintaxis de los tipos de datos incorporados se describe en Sintaxis de tipo de datos incorporados
Una referencia-tabla especifica una tabla resultante intermedia.
  • Si se especifica una referencia-tabla-única sin una especificación-período o una cláusula-tablesample, la tabla de resultados intermedia son las filas de la tabla. Si se especifica una especificación-período, la tabla de resultados intermedia se compone de las filas de la tabla temporal en la que el período coincide con la especificación. Si se especifica una cláusula-tablesample, la tabla de resultados intermedia está formada por un subconjunto de ejemplo de las filas de la tabla.
  • Si se especifica una referencia-vista-única sin una especificación-período, la tabla de resultados intermedia es esa vista. Si se especifica una especificación-período, las referencias de tabla temporal de la vista solamente tienen en cuenta a las filas en las que el período coincide con al especificación.
  • Si se especifica una referencia-apodo-único, la tabla de resultados intermedia son los datos de la fuente de datos de ese apodo.
  • Si se especifica una referencia-tabla-solamente, la tabla de resultados intermedia se compone únicamente de las filas de la tabla o vista especificada sin tener en cuenta las subtablas o subvistas aplicables.
  • Si se especifica una referencia-tabla-externa, la tabla de resultados intermedia representa una tabla virtual basada en todas las subtablas de una tabla con tipo o en todas las subvistas de una vista con tipo.
  • Si se especifica una expresión-analyze_table, la tabla de resultados contiene el resultado de ejecutar un modelo de minería de datos específico mediante un proveedor de analíticas de base de datos, una implementación de modelo con nombre y datos de entrada.
  • Si se especifica una expresión-tabla-anidada, la tabla de resultados es el resultado de la selección completa especificada.
  • Si se especifica una referencia-tabla-cambio-datos, la tabla de resultados intermedia es el conjunto de filas que se cambia directamente mediante la sentencia UPDATE buscada, DELETE buscada o INSERT que se incluye en la cláusula.
  • Si se especifica una referencia-función-tabla, la tabla de resultados intermedia es el conjunto de filas que devuelve la función de tabla.
  • Si se especifica una tabla-derivada-colección, la tabla de resultados intermedia es el conjunto de filas que devuelve la función UNNEST.
  • Si se especifica una expresión-xmltable, la tabla de resultados intermedia es el conjunto de filas que devuelve la .
  • Si se especifica una tabla-unida, la tabla de resultados es el resultado de una o varias operaciones de unión. Para obtener más información, consulte el apartado tabla-unida.
  • Si se especifica una referencia-tabla-externa sin una cláusula-tablesample, la tabla de resultados intermedia son las filas de la tabla externa representada por el archivo especificado. Si se especifica una cláusula-tablesample, la tabla de resultados intermedia está formada por un subconjunto de ejemplo de las filas de la tabla externa representada por el archivo especificado.
referencia-tabla-exclusiva

Cada nombre-tabla especificado como una referencia-tabla debe identificar una tabla existente en el servidor de aplicaciones o una tabla existente en el servidor remoto especificado mediante un nombre-objeto-remoto. La tabla de resultados intermedia es el resultado de la tabla. Si nombre-tabla hace referencia a una tabla con tipo, la tabla de resultados intermedia es la UNION ALL de la tabla con todas sus subtablas y solamente con las columnas de nombre-tabla. Se puede utilizar una especificación-período con una tabla temporal para especificar el período desde el que se devuelven las filas como tabla de resultados intermedia. Se puede utilizar una cláusula-tablesample para especificar que se devuelva una muestra de las filas como tabla de resultados intermedia.

Si el registro especial CURRENT TEMPORAL SYSTEM_TIME está fijado en un valor no nulo CTST y nombre-tabla identifica una tabla temporal de período de sistema, la referencia de tabla se ejecuta como si contuviera la especificación siguiente con el registro especial establecido en el valor nulo:
   nombre-tabla FOR SYSTEM_TIME AS OF CTST
Si el registro especial CURRENT TEMPORAL BUSINESS_TIME está fijado en un valor no nulo CTBT y nombre-tabla identifica una tabla temporal de período de aplicación, la referencia de tabla se ejecuta como si contuviera la especificación siguiente con el registro especial establecido en el valor nulo:
   nombre-tabla FOR BUSINESS_TIME AS OF CTBT
referencia-vista-exclusiva
Cada nombre-vista especificado como una referencia-tabla debe identificar uno de los objetos siguientes:
  • Una vista existente en el servidor de aplicaciones
  • Una vista en el servidor remoto que se especifica mediante un nombre-objeto-remoto
  • El nombre-tabla de una expresión de tabla común
La tabla de resultados intermedia es el resultado de la vista o expresión de tabla común. Si el nombre-vista hace referencia a una tabla con tipo, la tabla de resultados intermedia es la UNION ALL de la vista con todos sus subvistas y solamente con las columnas de nombre-vista. Se puede utilizar una especificación-período con una vista definida sobre una tabla temporal para especificar el período desde el que se devuelven las filas como tabla de resultados intermedia.
Si el registro especial CURRENT TEMPORAL SYSTEM_TIME está fijado en un valor no nulo CTST y nombre-vista identifica una tabla temporal de período de sistema, la referencia de tabla se ejecuta como si contuviera la especificación siguiente con el registro especial establecido en el valor nulo:
  • nombre-vista FOR SYSTEM_TIME AS OF CTST
Si el registro especial CURRENT TEMPORAL BUSINESS_TIME está fijado en un valor no nulo CTBT y nombre-vista identifica una tabla temporal de período de aplicación, la referencia de tabla se ejecuta como si contuviera la especificación siguiente con el registro especial establecido en el valor nulo:
  • nombre-vista FOR BUSINESS_TIME AS OF CTBT
referencia-apodo-exclusiva

Cada apodo especificado como una referencia-tabla debe identificar un apodo existente en el servidor de aplicaciones. La tabla de resultados intermedia es el resultado del apodo.

referencia-tabla-solamente

El uso de ONLY(nombre-tabla) u ONLY(nombre-vista) significa que las filas de las subtablas o subvistas aplicables no se incluyen en la tabla de resultados intermedia. Si el nombre-tabla utilizado con ONLY no tiene subtablas, ONLY(nombre-tabla) equivale a especificar nombre-tabla. Si el nombre-vista utilizado con ONLY no tiene subvistas, ONLY(nombre-vista) equivale a especificar nombre-vista.

El uso de ONLY requiere el privilegio SELECT en cada subtabla de nombre-tabla o subvista de nombre-vista.

referencia-tabla-externa

El uso de OUTER(nombre-tabla) u OUTER(nombre-vista) representa una tabla virtual. Si el nombre-tabla o el nombre-vista que se utilice con OUTER no tiene subtablas o subvistas, especificar OUTER equivale a no especificar OUTER. Si nombre-tabla tiene subtablas, la tabla de resultados intermedia de OUTER(nombre-tabla) se deriva de nombre-tabla de la forma siguiente:

  • En las columnas se incluyen las columnas de nombre-tabla seguidas de las columnas adicionales que ha incluido cada una de sus subtablas, si existen. Las columnas adicionales se añaden a la derecha atravesando la jerarquía de las subtablas por orden de importancia. Se atraviesan las subtablas que tienen un padre común en el orden de creación de sus tipos.
  • En las filas, se incluyen todas las filas de nombre-tabla y todas las filas de sus subtablas. Se devuelven valores nulos para las columnas que no están en la subtabla para la fila.

Si nombre-vista tiene subvistas, la tabla de resultados intermedia de OUTER(nombre-vista) se deriva de nombre-vista de la forma siguiente:

  • En las columnas se incluyen las columnas de nombre-vista seguidas de las columnas adicionales que ha incluido cada una de sus subvistas, si existen. Las columnas adicionales se añaden a la derecha atravesando la jerarquía de las subvistas por orden de importancia. Se atraviesan las subvistas que tienen un padre común en el orden de creación de sus tipos.
  • En las filas se incluyen todas las filas de nombre-vista y todas las filas de sus subvistas. Se devuelven valores nulos para las columnas que no están en la subvista para la fila.

El uso de OUTER requiere el privilegio SELECT en cada subtabla de nombre-tabla o subvista de nombre-vista.

expresión-analyze_table
nombre-tabla | nombre-vista
La variable nombre-tabla o nombre-vista debe identificar una tabla o vista existente, o identificar el nombre-tabla de una expresión de tabla común que se define con anterioridad a la selección completa que contiene la referencia de tabla. Puede especificar un apodo. Sin embargo, las analíticas de la base de datos se destinan a los datos locales, y la recuperación de los datos para un apodo desde otra fuente de datos no se beneficia de las ventajas del rendimiento previsto.
ANALYZE_TABLE
Devuelve el resultado de la ejecución de un modelo de minería de datos específico mediante la utilización de un proveedor de analíticas de base de datos, una implementación de modelo con nombre y datos de entrada. Una consulta que haga referencia al parámetro ANALYZE_TABLE no puede ser una sentencia de SQL estático o una sentencia de lenguaje de definición de datos (DDL). Los valores de entrada o salida no pueden ser de los siguientes tipos:
  • CHAR FOR BIT DATA o VARCHAR FOR BIT DATA
  • BINARY o VARBINARY
  • BLOB, CLOB, DBCLOB o NCLOB
  • BOOLEAN
  • XML
  • DB2SECURITYLABEL
IMPLEMENTATION 'serie'
Especifica cómo ha de evaluarse la expresión. El parámetro serie es una constante de serie cuya longitud máxima son 1024 bytes. El valor especificado se utiliza para establecer una sesión con un proveedor de analíticas de la base de datos. Cuando especifica SAS como proveedor, debe especificar valores para los siguientes parámetros no sensibles a las mayúsculas y minúsculas:
PROVIDER
Actualmente, el único valor de proveedor que recibe soporte es SAS.
ROUTINE_SOURCE_TABLE
Especifica una tabla de usuario que contiene el código DS2 (y, opcionalmente, cualquier formato o metadatos necesarios) para implementar el algoritmo que se especifica mediante el parámetro ROUTINE_SOURCE_NAME. DS2 es un procesador de lenguaje de procedimiento para SAS, diseñado para el modelado de datos y el proceso de extracción, transformación y carga (ETL) de datos.

La tabla fuente de rutinas tiene una estructura definida (consulte los ejemplos que se facilitan al final de la sección expresión-analyze_table) y, en un entorno de base de datos particionada, debe residir en la partición de base de datos de catálogo. La tabla no puede ser una tabla temporal global. La columna MODELDS2 para una fila en particular no debe estar vacía ni contener el valor nulo. Si el valor de la columna MODELFORMATS o MODELMETADATA no es nulo, el valor debe tener una longitud mayor que 0. Si no especifica un nombre de esquema de tabla, se utiliza el valor del registro especial CURRENT SCHEMA.

ROUTINE_SOURCE_NAME
Especifica el nombre del algoritmo que ha de utilizarse.
Por ejemplo:
IMPLEMENTATION
  'PROVIDER=SAS;
  ROUTINE_SOURCE_TABLE=ETLIN.SOURCE_TABLE;
  ROUTINE_SOURCE_NAME=SCORING_FUN1;'
Si el nombre de tabla, nombre de esquema o nombre de algoritmo contiene letras en minúsculas o una combinación de letras en mayúsculas y minúsculas, especifique identificadores delimitados, tal como se muestra en el ejemplo siguiente:
IMPLEMENTATION
  'PROVIDER=SAS;
  ROUTINE_SOURCE_TABLE="ETLin"."Source_Table";
  ROUTINE_SOURCE_NAME="Scoring_Fun1";'

Los siguientes ejemplos le muestran cómo utilizar la expresión ANALYZE_TABLE.

Las herramientas de SAS le ayudan a definir una tabla para almacenar implementaciones de modelo para funciones de puntuación. Una fila de esta tabla almacena un algoritmo que se graba en DS2, con la información de formato SAS y metadatos necesarios. La columna MODELNAME se utiliza como clave primaria. Para un valor en particular del parámetro ROUTINE_SOURCE_NAME, como máximo se recupera una fila de la tabla que el parámetro ROUTINE_SOURCE_TABLE especifica. Por ejemplo:
   CREATE TABLE ETLIN.SOURCE_TABLE (
     MODELNAME VARCHAR(128) NOT NULL PRIMARY KEY,
     MODELDS2 BLOB(4M) NOT NULL,
     MODELFORMATS BLOB(4M),
     MODELMETADATA BLOB(4M)
   );
La columna MODELNAME contiene el nombre del algoritmo. La columna MODELDS2 contiene el código fuente DS2 que implementa el algoritmo. La columna MODELFORMATS contiene la definición de formato SAS agregada que el algoritmo necesita. Si el algoritmo no requiere un formato SAS, esta columna contiene el valor nulo. La columna MODELMETADATA contiene los metadatos adicionales que el algoritmo necesita. Si el algoritmo no requiere datos adicionales, esta columna contiene el valor nulo. Si el instalador de SAS EP crea la tabla, puede que ésta incluya columnas adicionales.
  • Utilice los datos de las columnas C1 y C2 de la tabla T1 como datos entrada con el modelo de puntuación SCORING_FUN1, cuya implementación se almacena en ETLIN.SOURCE_TABLE:
       WITH sas_score_in (c1,c2) AS
         (SELECT c1,c2 FROM t1)
         SELECT *
           FROM sas_score_in ANALYZE_TABLE(
             IMPLEMENTATION
               'PROVIDER=SAS;
                ROUTINE_SOURCE_TABLE=ETLIN.SOURCE_TABLE;
                ROUTINE_SOURCE_NAME=SCORING_FUN1;');
  • Utilice todos los datos de la tabla T2 con el modelo de puntuación SCORING_FUN2, cuya implementación se almacena en ETLIN.SOURCE_TABLE:
       SELECT *
         FROM t2 ANALYZE_TABLE(
           IMPLEMENTATION
             'PROVIDER=SAS;
              ROUTINE_SOURCE_TABLE=ETLIN.SOURCE_TABLE;
              ROUTINE_SOURCE_NAME=SCORING_FUN2;');
  • Utilice todos los datos de la vista V1 con el modelo de puntuación SCORING_FUN3, cuya implementación se almacena en ETLIN.SOURCE_TABLE, y devuelva la salida de la primera columna de salida en orden ascendente:
       SELECT *
         FROM v1 ANALYZE_TABLE(
           IMPLEMENTATION
             'PROVIDER=SAS;
              ROUTINE_SOURCE_TABLE=ETLIN.SOURCE_TABLE;
              ROUTINE_SOURCE_NAME=SCORING_FUN3;')
         ORDER BY 1;
expresión-tabla-anidada

Una selección completa entre paréntesis se denomina expresión de tabla anidada. La tabla de resultados intermedia es el resultado de esa selección completa. Las columnas del resultado no requieren nombres exclusivos, pero no se puede hacer referencia explícita a una columna con un nombre no exclusivo. Si se especifica LATERAL, la selección completa puede incluir referencias correlacionadas a columnas de resultados de las referencias de tabla especificadas a la izquierda de la expresión de tabla anidada. Si en la expresión de tabla anidada participan datos de una fuente de datos, se puede especificar que un manejador-continuo tolere determinadas condiciones de error de la fuente de datos.

Una expresión de la lista de selección de una expresión de tabla anidada a la que se hace referencia en una sentencia de cambio de datos de una selección completa, o que es el destino de dicha sentencia, solamente es válida si no incluye:
  • Una función que lee o modifica datos de SQL
  • Una función que no es determinante
  • Una función que tiene acción externa
  • Una función OLAP
Si se hace referencia directamente a una vista en una expresión de tabla anidada de una sentencia de cambio de datos dentro de una cláusula FROM, o es el destino de dicha expresión, la vista debe cumplir alguna de las condiciones siguientes:
  • Ser simétrica (tener especificado WITH CHECK OPTION)
  • Cumplir la restricción de una vista WITH CHECK OPTION
Si el destino de una sentencia de cambio de datos dentro de una cláusula FROM es una expresión de tabla anidada, se aplican las restricciones siguientes:
  • Las filas modificadas no se vuelven a calificar
  • Los predicados de cláusula WHERE no se vuelven a evaluar
  • Las operaciones ORDER BY o FETCH FIRST no se vuelven a realizar
Una expresión de tabla anidada se puede utilizar en las situaciones siguientes:
  • En el lugar de una vista para evitar la creación de la vista (cuando no es necesario el uso general de la vista)
  • Cuando la tabla de resultados intermedia necesaria se basa en variables del lenguaje principal
referencia-tabla-cambio-datos

Una cláusula referencia-tabla-cambio-datos especifica una tabla de resultados intermedia. Esta tabla se basa en las filas que cambia directamente la sentencia UPDATE buscada, DELETE buscada o INSERT que se incluye en la cláusula. Una referencia-tabla-cambio-datos se puede especificar como la única referencia-tabla de la cláusula FROM de la selección completa externa que se utiliza en una sentencia-select, una sentencia SELECT INTO o una expresión de tabla común. También se puede especificar una referencia-tabla-cambio-datos como la única referencia de tabla en la única selección completa de una sentencia SET Variable (SQLSTATE 428FL). Se considera que la tabla o vista de destino de la sentencia de cambio de datos es una tabla o vista a la que se hace referencia en la consulta; por lo tanto, el ID de autorización de la consulta debe tener privilegio SELECT sobre la tabla o vista de destino. Una cláusula referencia-tabla-cambio-datos no puede especificarse en una definición de vista, en una definición de tabla de consulta materializada ni en una sentencia FOR (SQLSTATE 428FL).

El destino de la sentencia UPDATE, DELETE o INSERT no puede ser una vista temporal definida en una expresión de tabla común (SQLSTATE 42807) o un apodo (SQLSTATE 25000).

Las expresiones de la lista de selección de una vista o selección completa como destino de una sentencia de cambio de datos en una referencia-tabla sólo pueden seleccionarse si se especifica OLD TABLE o si la expresión no incluye los elementos siguientes (SQLSTATE 428G6):
  • Una subconsulta
  • Una función que lee o modifica datos de SQL
  • Una función que no es determinista o que tiene una acción externa
  • Una función OLAP
  • Una referencia NEXT VALUE FOR secuencia
FINAL TABLE
Especifica que las filas de la tabla de resultados intermedia representan el conjunto de filas que la sentencia de cambio de datos de SQL cambia respecto a como existían al final de la sentencia de cambio de datos. Si hay activadores AFTER o restricciones de referencia que dan lugar a más operaciones sobre la tabla que es el destino de la sentencia de cambio de datos de SQL, se devuelve un error (SQLSTATE 560C6). Si el destino de la sentencia de cambio de datos de SQL es una vista que está definida con un activador INSTEAD OF para el tipo de cambio de datos, se devuelve un error (SQLSTATE 428G3).
NEW TABLE
Especifica que las filas de la tabla de resultados intermedia representan el conjunto de filas que la sentencia de cambio de datos de SQL cambia antes de la aplicación de restricciones referenciales y de activadores AFTER. Es posible que los datos de la tabla de destino al final de la sentencia no coincidan con los datos de la tabla de resultados intermedia debido al proceso adicional de restricciones de referencia y activadores AFTER.
OLD TABLE
Especifica que las filas de la tabla de resultados intermedia representan el conjunto de filas que la sentencia de cambio de datos de SQL cambia respecto a como existían antes de la aplicación de la sentencia de cambio de datos.
(sentencia-update-buscada)
Especifica una sentencia UPDATE buscada. Una cláusula WHERE o una cláusula SET en la sentencia UPDATE no puede contener referencias correlacionadas a columnas fuera de la sentencia UPDATE.
(sentencia-delete-buscada)
Especifica una sentencia DELETE buscada. Una cláusula WHERE en la sentencia DELETE no puede contener referencias correlacionadas a columnas fuera de la sentencia DELETE.
(sentencia-insert)
Especifica una sentencia INSERT. Una selección completa en la sentencia INSERT no puede contener referencias correlacionadas a columnas fuera de la selección completa de la sentencia INSERT.

El contenido de la tabla de resultados intermedia correspondiente a referencia-tabla-cambio-datos se determina cuando se abre el cursor. La tabla de resultados intermedia contiene todas las filas manipuladas, incluidas todas las columnas de la tabla o vista de destino especificada. Todas las columnas de la tabla o vista de destino correspondiente a una sentencia de cambio de datos SQL resultan accesibles utilizando los nombres de columnas de la tabla o vista de destino. Si se ha especificado una cláusula INCLUDE dentro de una sentencia de cambio de datos, la tabla de resultados intermedia contendrá estas columnas adicionales.

referencia-función-tabla
En general, se puede hacer referencia a una función de tabla, junto a los valores de sus argumentos en la cláusula FROM de una sentencia SELECT, exactamente de la misma manera que una tabla o una vista. Cada nombre-función, junto con los tipos de sus argumentos, especificado como una referencia a tabla, debe resolverse en una función de tabla existente en el servidor de aplicaciones. Sin embargo, se aplican algunas consideraciones especiales.
  • Nombres de columna de función de tabla: A menos que se proporcionen nombres de columna alternativos a continuación del nombre-correlación, los nombres de columna para la función de tabla son los especificados en la cláusula RETURNS o RETURNS GENERIC TABLE de la sentencia CREATE FUNCTION. Es análogo a los nombres de las columnas de una tabla, que se definen en la sentencia CREATE TABLE.
  • Resolución de función de tabla: Los argumentos especificados en una referencia de función de tabla, junto con el nombre de la función, los utiliza un algoritmo llamado resolución de función para determinar la función exacta que se va a utilizar. Esta operación no es diferente de lo que ocurre con las demás funciones (por ejemplo, en las funciones escalares) utilizadas en una sentencia.
  • Argumentos de función de tabla: Como en los argumentos de funciones escalares, los argumentos de función de tabla pueden ser en general cualquier expresión SQL válida. Los siguientes ejemplos contienen sintaxis válida:
      Ejemplo 1:  SELECT c1
                  FROM TABLE( tf1('Zachary') ) AS z
                  WHERE c2 = 'FLORIDA';
    
      Ejemplo 2:  SELECT c1
                  FROM TABLE( tf2 (:hostvar1, CURRENT DATE) ) AS z;
    
      Ejemplo 3:  SELECT c1
                  FROM t
                  WHERE c2 IN
                           (SELECT c3 FROM
                            TABLE( tf5(t.c4) ) AS z  -- correlated reference
                           )                         -- a cláusula FROM ant.
      Ejemplo 4:  SELECT c1
                  FROM TABLE( tf6('abcd') )  -- tf6 es una función de tabla
                      AS z (c1 int, c2 varchar(100)) -- java genérica
  • Funciones de tabla que modifican datos SQL: Las funciones de tabla que se especifican con la opción MODIFIES SQL DATA sólo se pueden utilizar como la última referencia de tabla de una sentencia-select, expresión-tabla-común o sentencia RETURN que sea una subselección, una función SELECT INTO o una selección-completa-fila de una sentencia SET. Sólo se permite una función de tabla en una cláusula FROM y los argumentos de la función de tabla deben estar correlacionados con las demás referencias de tabla de la subselección (SQLSTATE 429BL). Los siguientes ejemplos contienen sintaxis válida para una función de tabla con la propiedad MODIFIES SQL DATA:
      Ejemplo 1:  SELECT c1
                  FROM TABLE( tfmod('Jones') ) AS z
    
      Ejemplo 2:  SELECT c1
                  FROM t1, t2, TABLE( tfmod(t1.c1, t2.c1) ) AS z
    
      Ejemplo 3:  SET var =
                  (SELECT c1
                  FROM TABLE( tfmod('Jones') ) AS z
    
      Ejemplo 4:  RETURN SELECT c1
                  FROM TABLE( tfmod('Jones') ) AS z
    
      Ejemplo 5:  WITH v1(c1) AS
                  (SELECT c1
                  FROM TABLE( tfmod(:hostvar1) ) AS z)
                  SELECT c1 
                  FROM v1, t1 WHERE v1.c1 = t1.c1
      Ejemplo 6: SELECT z.* 
                 FROM t1, t2, TABLE( tfmod(t1.c1, t2.c1) ) 
                 AS z (col1 int)
tabla-derivada-colección

Se puede utilizar una tabla-derivada-colección para convertir los elementos de matrices en valores de una columna en filas separadas. Si se especifica WITH ORDINALITY, se añade una columna extra con tipo de datos INTEGER. Esta columna contiene la posición del elemento en la matriz. Se puede hacer referencia a las columnas en la lista de selección y el resto de la subselección utilizando los nombres especificados para las columnas en la cláusula-correlación. La cláusula tabla-derivada-colección sólo se puede utilizar en un contexto donde se dé soporte a matrices (SQLSTATE 42887). Consulte la "función de tabla UNNEST" para conocer los detalles.

expresión-xmltable
Una expresión-xmltable especifica una invocación de la función XMLTABLE incorporada que determina la tabla de resultados intermedia. Vea XMLTABLE para obtener más información.
referencia-tabla-externa
Una tabla externa reside en un archivo delimitado basado en texto fuera de una base de datos. Una referencia-tabla-externa especifica el nombre del archivo que contiene una tabla externa.
definición-columna
Los atributos de una columna.
nombre-columna
Es el nombre de una columna de la tabla. El nombre no puede estar calificado y no puede utilizarse el mismo nombre para más de una columna de la tabla (SQLSTATE 42711). [!!! ¿se aplica aquí la frase anterior?]
tipo-incorporado
Uno de los siguientes tipos de datos incorporados:
SMALLINT
Entero pequeño.
[INTEGER | INT]
Entero grande.
BIGINT
Entero muy grande.
[DECIMAL | DEC | NUMERIC | NUM](entero-precisión, entero-escala)
Un número decimal.
  • El entero de precisión especifica el número total de dígitos. Debe estar dentro del rango de 1 ‑ 31. El valor predeterminado es 5.
  • El entero de escala especifica el número de dígitos a la derecha de la coma decimal. No puede ser negativo y no puede superar la precisión. El valor por omisión es 0.
FLOAT(entero)
Número de coma flotante individual o de doble precisión. Si la longitud especificada está en el rango:
  • 1 - 24, el número utiliza la precisión individual
  • 25 - 53, el número utiliza la precisión doble
En lugar de FLOAT, puede especificar:
REAL
Para especificar un valor de coma flotante de precisión simple.
DOUBLE
Para especificar coma flotante de precisión doble.
DOUBLE PRECISION
Para especificar coma flotante de precisión doble.
FLOAT
Para especificar coma flotante de precisión doble.
DECFLOAT(entero-precisión)
Número decimal de coma flotante. El entero de precisión especifica el número total de dígitos, puede ser 16 o 34. El valor por omisión es 34.
[CHARACTER | CHAR](entero [OCTETS | CODEUNITS32])
Serie de caracteres de longitud fija del número de unidades de código especificado. Este número puede oscilar de 1 ‑ 255 OCTETS o de 1 - 63 CODEUNITS32. El valor por omisión es 1.
[VARCHAR | CHARACTER VARYING | CHAR VARYING](entero [OCTETS | CODEUNITS32])
Serie de caracteres de longitud variable del número de unidades de código especificado. Este número puede oscilar de 1 ‑ 32672 OCTETS o de 1 - 8168 CODEUNITS32.
FOR BIT DATA
Especifica que el contenido de la columna se tratará como datos de bit (binarios). Durante el intercambio de datos con otros sistemas, no se efectúan conversiones de página de códigos. Las comparaciones se efectúan en binario, sin tener en cuenta el orden de clasificación de la base de datos.
La cláusula FOR BIT DATA no se puede especificar con unidades de serie CODEUNITS32 (SQLSTATE 42613).
[CLOB | CHARACTER LARGE OBJECT | CHAR LARGE OBJECT](entero [K] [OCTETS | CODEUNITS32])
Serie de objetos grandes de caracteres con una longitud máxima del número de unidades de código especificado. La longitud máxima predeterminada es 65.535 bytes.
Si desea multiplicar el entero de longitud por 1024, especifique un multiplicador K (kilo) .
  • Independientemente de si utiliza o no un multiplicador K, la longitud resultante está limitada a la longitud máxima de una columna CLOB en una tabla externa, que es 65.535 OCTETS, 32.767 CODEUNITS16 o 16.383 CODEUNITS32. Tenga en cuenta que 64K OCTETS y 16K CODEUNITS32 exceden cada uno la longitud máximo por uno y, por lo tanto, no están permitidos.
  • Cualquier número de espacios (incluidos los espacios de cero) está permitido entre el tipo de datos y la especificación de longitud o entre el entero de longitud y el multiplicador K. Por ejemplo, las especificaciones siguientes son todas equivalentes y válidas:
    CLOB(50K)
    CLOB(50 K)
    CLOB (50   K)
  • El multiplicador K se puede especificar el mayúsculas o minúsculas.

Las unidades de serie predeterminadas son OCTETS.

OCTETS
Especifica que las unidades del atributo de longitud son bytes.
CODEUNITS32
Especifica que las unidades del atributo de longitud son unidades de código Unicode UTF-32 que aproximan el recuento en caracteres. Esto no afecta la página de códigos subyacente del tipo de datos. La longitud real de un valor de datos se determina contando las unidades de código UTF-32 como si los datos se hubieran convertido a UTF-32.
GRAPHIC(entero [CODEUNITS16 | CODEUNITS32])
Una serie gráfica de longitud fija de la longitud especificada, que puede oscilar de 1 ‑ 127 bytes dobles, de 1 ‑ 127 CODEUNITS16 de 1 ‑ 63 CODEUNITS32. La longitud predeterminada es 1.
VARGRAPHIC(entero [CODEUNITS16 | CODEUNITS32])
Una serie gráfica de longitud variable de la longitud máxima especificada, que puede oscilar de 1 ‑ 16336 bytes dobles, de 1 ‑ 16336 CODEUNITS16 o de 1 ‑ 8168 CODEUNITS32.
DBCLOB(entero [K] [CODEUNITS16 | CODEUNITS32])
Serie de gran objeto de caracteres de la longitud máxima especificada en bytes dobles, unidades de código Unicode UTF-16 o unidades de código Unicode UTF-32. La longitud máxima predeterminada es 32.767 doble bytes.
Si desea multiplicar el entero de longitud por 1024, especifique un multiplicador K (kilo) .
  • Independientemente de si utiliza o no un multiplicador K, la longitud resultante está limitada por la longitud máxima de una columna DBCLOB en una tabla externa, que es 32.767 CODEUNITS16 o 16.383 CODEUNITS32. Tenga en cuenta que 32K CODEUNITS16 y 16K CODEUNITS32 exceden cada uno la longitud máxima por uno y, por lo tanto, no están autorizados.
  • Cualquier número de espacios (incluidos los espacios de cero) está permitido entre el tipo de datos y la especificación de longitud o entre el entero de longitud y el multiplicador K. Por ejemplo, las especificaciones siguientes son todas equivalentes y válidas:
    DBCLOB(50K)
    DBCLOB(50 K)
    DBCLOB (50   K)
  • El multiplicador K se puede especificar el mayúsculas o minúsculas.

Las unidades de serie predeterminadas son CODEUNITS16.

CODEUNITS16
Especifica que las unidades del atributo de longitud son unidades de código Unicode UTF-16, que es lo mismo que contar en doble bytes.
CODEUNITS32
Especifica que las unidades del atributo de longitud son unidades de código Unicode UTF-32. Esto no afecta la página de códigos subyacente del tipo de datos. La longitud real de un valor de datos se determina contando las unidades de código UTF-32 como si los datos se hubieran convertido a UTF-32.
[NATIONAL CHARACTER | NATIONAL CHAR | NCHAR](entero)
Serie de longitud fija de la longitud especificada. La longitud predeterminada es 1.

El tipo NATIONAL CHARACTER se correlaciona con una serie de caracteres de longitud fija con unidades de serie CODEUNITS32.

[NATIONAL CHARACTER VARYING | NATIONAL CHAR VARYING | NCHAR VARYING | NVARCHAR](entero)
Serie de longitud variable de la longitud máxima especificada.

El tipo NATIONAL CHARACTER VARYING se correlaciona con una serie de caracteres de longitud variante con unidades de serie CODEUNITS32.

[NATIONAL CHARACTER LARGE OBJECT | NCHAR LARGE OBJECT | NCLOB](entero [K])
Serie de objeto grande de la longitud máxima especificada. La longitud máxima predeterminada es 16.383 doble bytes.

Este tipo de datos correlaciona un objeto grande de carácter (CLOB) con unidades de serie CODEUNITS32. Consulte la descripción del parámetro CLOB si desea información sobre los posibles valores para el entero de longitud y sobre cómo utilizar un K (kilo) .

BINARY(entero)
Una serie binaria de longitud fija de la longitud especificada, que debe estar dentro del rango de 1 ‑ 255 bytes. La longitud predeterminada es 1.
[VARBINARY | BINARY VARYING](entero)
Una serie binaria de longitud variable de la longitud máxima especificada, que debe estar dentro del rango de 1 ‑ 32672 bytes.
[BLOB | BINARY LARGE OBJECT](entero [K])
Serie de objeto binario grande con una longitud máxima del número de unidades de código especificado. La longitud máxima predeterminada es 65.535 bytes.
Si desea multiplicar el entero de longitud por 1024, especifique un multiplicador K (kilo) .
  • Independientemente de si utilizar o no un multiplicador K, la longitud resultante está limitada por la longitud máxima de una columna BLOB en una tabla externa, que es 65.535 bytes. Tenga en cuenta que 64k excede la longitud máxima por uno y, por lo tanto, no está autorizado.
  • Cualquier número de espacios (incluidos los espacios de cero) está permitido entre el tipo de datos y la especificación de longitud o entre el entero de longitud y el multiplicador K. Por ejemplo, las especificaciones siguientes son todas equivalentes y válidas:
    BLOB(50K)    BLOB(50 K)    BLOB (50   K)
  • El multiplicador K se puede especificar el mayúsculas o minúsculas.
DATE
Fecha.
TIME
Hora.
TIMESTAMP(entero) o TIMESTAMP
Indicación de fecha y hora. El entero especifica el número de posiciones decimales para fracciones de segundo, de 0 (segundos) a 12 (picosegundos). El valor predeterminado es 6 (microsegundos).
BOOLEAN
Valor booleano.
LIKE nombre1-tabla o nombre-vista o apodo
Especifica que las columnas de la tabla tienen el mismo nombre y descripción que las columnas de la tabla (nombre-tabla-1), la vista (nombre-vista) o el apodo (apodo). La tabla, vista o apodo especificado debe existir en el catálogo o debe ser una tabla temporal declarada. No se puede especificar una tabla con tipo ni una vista con tipo (SQLSTATE 428EC).
El uso de LIKE es una definición implícita de n columnas, donde n es el número de columnas de la tabla identificada (incluidas las columnas implícitamente ocultas), vista o apodo. Una columna de la tabla nueva que se corresponde a una columna implícitamente oculta de la tabla existente también se definirá como implícitamente oculta. La definición implícita depende de lo que se especifique después de LIKE:
  • Si se especifica una tabla, la definición implícita incluye el nombre de columna, tipo de datos, atributo oculto y la posibilidad de contener nulos de cada una de las columnas de la tabla. Si no se especifica EXCLUDING COLUMN DEFAULTS, también se incluye el valor por omisión de la columna.
  • Si se especifica una vista, la definición implícita incluye el nombre de columna, tipo de datos y posibilidad de contener nulos de cada columna resultante de la selección completa definida en dicha vista. Los tipos de datos de las columnas de la vista deben ser tipos de datos válidos para las columnas de una tabla.
  • Si se especifica un apodo, la definición implícita incluye el nombre de columna, tipo de datos y la posibilidad de contener nulos de cada columna de dicho apodo.
  • Si se especifica una tabla protegida, la tabla nueva hereda la misma política de seguridad y las mismas columnas protegidas que la tabla identificada.
  • Si se especifica una tabla y si dicha tabla contiene una columna row-begin, una columna row-end o una columna transaction-start-ID, la columna correspondiente de la nueva tabla solo hereda el tipo de datos de la columna de origen. La nueva columna no se considera una columna generada.
  • Si se especifica una tabla que incluye un periodo en la cláusula LIKE, la nueva tabla no hereda la definición de periodo.
  • Si se especifica una tabla temporal de periodo del sistema, la nueva tabla no es una tabla temporal de periodo de sistema.
  • Si se especifica una tabla de distribución aleatoria que utiliza el método aleatorio por generación, y si la nueva tabla que se está creando no comparte la misma distribución de tablas, no se incluye la columna RANDOM_DISTRIBUTION_KEY que se utiliza para generar los valores de distribución aleatoria.

El valor predeterminado de columna y los atributos de columna de identidad se pueden incluir o excluir, en función de las cláusulas copy-attributes. La definición implícita no incluye ningún otro atributo de la tabla, vista o apodo designados. Por lo tanto, la tabla nueva no tiene ninguna clave primaria, restricciones exclusivas, restricciones de clave foránea, restricciones de integridad referencial, desencadenantes, índices, especificación ORGANIZE BY o especificación PARTITIONING KEY. La tabla se crea en el espacio de tablas implícita o explícitamente especificado mediante la cláusula IN y la tabla tiene cualquier otra cláusula opcional sólo si la cláusula opcional se especifica.

Cuando una tabla se identifica en la cláusula LIKE y dicha tabla contiene una columna ROW CHANGE TIMESTAMP, la columna correspondiente de la nueva tabla hereda sólo el tipo de datos de la columna ROW CHANGE TIMESTAMP. La nueva columna no se considera una columna generada.

Si se especifica una tabla, y está activado el control de acceso de nivel de fila o de columna para dicha tabla, la nueva tabla no lo hereda.

opción
Las opciones siguientes controlan la carga de datos o la recuperación de datos de un archivo de tabla externa. El valor de cada opción es una serie de texto y no distingue entre mayúsculas y minúsculas.
BOOLSTYLE o BOOLEAN_STYLE
Durante una operación de carga, todos los valores booleanos deben utilizar el mismo estilo. Esta opción especifica el estilo booleano que se va a utilizar:
  • 1_0 (este es el valor predeterminado)
  • T_F
  • Y_N
  • YES_NO
  • TRUE_FALSE
CARDINALITY
Valor entero positivo distinto de cero que se utiliza para sustituir la estimación del número esperado de filas devueltas.
CCSID
Identificador de juego de caracteres codificados (CCSID) del archivo de datos de entrada. El valor puede ser cualquier valor de entero válido de la especificación CCSID. No hay ningún valor predeterminado. Las opciones CCSID y ENCODING se excluyen entre sí cuando el valor de la opción ENCODING es UTF8, LATIN9 o INTERNAL.
Los estilos que se utilizan para las fechas y las horas dependen de si se ha especificado CCSID:
  • Cuando se ha especificado un CCSID, y cuando no se han especificado DATESTYLE, TIMESTYLE, DATEDELIM o TIMEDELIM, se utilizan los valores o valores predeterminados para DATE_FORMAT, TIME_FORMAT y TIMESTAMP_FORMAT.
  • Cuando no se ha especificado un CCSID, y cuando no se han especificado TIMESTAMP_FORMAT, DATE_FORMAT o TIME_FORMAT, se utilizan los valores o valores predeterminados para DATESTYLE, TIMESTYLE, DATEDELIM y TIMEDELIM.
COMPRESS
En una operación de descarga, si los datos de archivo de datos de origen están comprimidos:
GZIP
Los datos de archivo de datos de origen se comprimen utilizando el algoritmo de compresión GZIP.
Cuando se utiliza la opción GZIP, el DATAOBJECT o FILE_NAME deben tener la extensión gz.
NO
Los datos de archivo de datos de origen no están comprimidos. Es el valor por omisión.
La opción COMPRESS no se puede especificar si el valor de la opción REMOTESOURCE es GZIP o LZ4.
CRINSTRING
Cómo interpretar un carácter de retorno de carro (CR) sin escape o un carácter de salto de línea de retorno de carro (CRLF):
TRUE o ON
Un carácter CR sin escape se interpreta como datos, no como un delimitador de registro. Un carácter CRLF sin escape se divide en un carácter CR, que se interpreta como datos, y un carácter LF, que se interpreta como delimitador de registro.
FALSE o OFF
Un carácter CR sin escape o un carácter CRLF se interpreta como delimitador de registro. Es el valor por omisión.
Utilice el formato de longitud fija para CRINSTRING solo si el valor de la opción CtrlChars está establecido en OFF.
CTRLCHARS
Si se va a permitir un valor ASCII 1 - 31 en un campo CHAR o VARCHAR. Se debe incluir un valor de escape en cualquier carácter NULL, CR o LF. Los valores permitidos son:
TRUE o ON
Está permitido un valor ASCII 1 - 31 en un campo CHAR o VARCHAR.
Si el formato de longitud fija está habilitado, están permitidos todos los caracteres no escapados.
FALSE o OFF
No está permitido un valor ASCII 1 - 31 en un campo CHAR o VARCHAR. Es el valor por omisión.
Si el formato de longitud fija está habilitado, los caracteres no escapados provocan un error.
Excepciones para el formato de longitud fija
  • \t, \n
  • \r si la opción CRinString está establecida en ON
DATAOBJECT o FILE_NAME
Nombre completo del archivo (o cualquier soporte que pueda tratarse como archivo) que va a contener la tabla externa que se va a crear. Esta opción es obligatoria cuando el nombre del archivo no se especifica inmediatamente después del nombre de tabla; de lo contrario, no se permite.
  • Para un servicio gestionado basado en la nube como Db2 Warehouse on Cloud, si la opción REMOTESOURCE se establece en LOCAL (este es el valor predeterminado), la vía de acceso al archivo de la tabla externa es relativa al directorio de inicio de Servicios gestionados Db2. De lo contrario, la vía de acceso al archivo de tabla externa es relativa a la vía de acceso /home/ seguida por el ID de autorización del definidor de tabla. Por ejemplo, si el ID de autorización del definidor de la tabla es user1, la vía de acceso al archivo de tabla externa es relativa a /home/user1/.
  • Para un producto local como Db2 Warehouse, si la opción REMOTESOURCE está establecida en LOCAL (el valor predeterminado) y el parámetro de configuración extbl_strict_io está establecido en NO, la vía de acceso al archivo de tabla externa es una vía absoluta y debe ser una de las vías de acceso especificadas por el parámetro de configuración extbl_location. De lo contrario, la vía de acceso al archivo de tabla externa es relativa a la vía de acceso especificada por el parámetro de configuración extbl_location seguida por el ID de autorización del definidor de tabla. Por ejemplo, si extbl_location se ha establecido en /home/xyz y el ID de autorización del definidor de tabla es user1, la vía de acceso al archivo de tabla externa es relativa a /home/xyz/user1/.
El nombre de archivo debe ser una serie UTF-8 válida.
Para una operación de carga, se aplican las condiciones siguientes:
  • El archivo ya debe existir.
  • Permisos necesarios:
    • Si la tabla externa es una tabla externa con nombre, el propietario debe tener el permiso de escritura para el archivo y el permiso de escritura para el directorio LOGDIR.
    • Si la tabla externa es una tabla externa transitoria, el ID de autorización de la sentencia debe tener el permiso de lectura para el archivo y el permiso de escritura para el directorio LOGDIR.
Para una operación de descarga, se aplican las condiciones siguientes:
  • Si el archivo existe, se sobrescribe.
  • Permisos necesarios:
    • Si la tabla externa es una tabla externa con nombre, el propietario debe tener permiso de lectura y escritura para el directorio de este archivo.
    • Si la tabla externa es transitoria, el ID de autorización de la sentencia debe tener permiso de lectura y escritura para el directorio de este archivo.
DATEDELIM
Carácter delimitador que separa los componentes de una fecha, según el formato especificado por la opción DATESTYLE. Si especifica una serie vacía, no hay ningún delimitador entre los componentes de fecha, y los días y los meses se deben especificar como números de dos dígitos. Cuando DATESTYLE está establecido en MONDY o MONDY2, el valor DATEDELIM predeterminado es un espacio. Las opciones TIMESTAMP_FORMAT y DATEDELIM se excluyen entre sí.
DATESTYLE
Cómo interpretar el formato de fecha. Para los días o meses dentro del rango de 1 ‑ 9, utilice 1 dígito, 2 dígitos o un espacio seguido por un solo dígito. Cuando la opción DATEDELIM es un espacio, puede especificar una coma detrás del día. Se produce un error si
  • Especifica un cero para un día, mes o año
  • Especifica una fecha no existente (por ejemplo, 32 de agosto o 30 de febrero)
La opción DATESTYLE y la opción DATE_FORMAT o TIMESTAMP_FORMAT se excluyen entre sí.
Tabla 1. Valores posibles para la opción DateStyle . El ejemplo muestra cómo se representaría la fecha 21 de marzo de 2014 cuando DATEDELIM está establecido en '-'.
Valor Descripción Ejemplo
AMD Año de 4 dígitos, mes de 2 dígitos, día de 2 dígitos. Es el valor por omisión. 2014-03-21
DMA Día de 2 dígitos, mes de 2 dígitos, año de 4 dígitos. 21-03-2014
MDA Mes de 3 dígitos, día de 2 dígitos, año de 4 dígitos. 03-21-2014
MONDA Mes de 3 caracteres, día de 2 dígitos, año de 4 dígitos. Mar 21 2014
DMONA Día de 2 dígitos, mes de 3 caracteres, año de 4 dígitos. 21-Mar-2014
A2MD Año de 2 dígitos, mes de 2 dígitos, día de 2 dígitos. No está soportado para las descargas. 14-03-21
DMA2 Día de 2 dígitos, mes de 2 dígitos, año de 2 dígitos. No está soportado para las descargas. 21-03-14
MDA2 Mes de 2 dígitos, día de 2 dígitos, año de 2 dígitos. No está soportado para las descargas. 03-21-14
MONDA2 Mes de 3 caracteres, día de 2 dígitos, año de 2 dígitos. No está soportado para las descargas. Mar 21 14
DMONA2 Día de 2 dígitos, mes de 3 caracteres, año de 2 dígitos. No está soportado para las descargas. 21-Mar-14
DATETIMEDELIM
Un carácter de un solo byte que separa el componente de fecha y hora y el componente de hora del tipo de datos de indicación de fecha y hora.
El delimitador predeterminado es un espacio (' ').
Entre el componente de fecha y el componente de hora, no es necesario un delimitador. Por ejemplo, los dos valores siguientes son válidos:
2010-10-10 10:10:10
2010-10-1010:10:10
DATE_FORMAT
Formato del campo de fecha en el archivo de datos. El valor puede adoptar cualquier serie de formato de fecha aceptado por Función escalar TIMESTAMP_FORMAT. El valor predeterminado es AAAA-MM-DD. La opción DATE_FORMAT y las opciones DATEDELIM o DATESTYLE se excluyen entre sí.
DECIMALDELIM o DECIMAL_CHARACTER
Delimitador decimal para los tipos de datos FLOAT, DOUBLE, TIME y TIMESTAMP. Los valores permitidos son ',' y '.'.
DECPLUSBLANK
Especifica cómo se representa el valor decimal positivo durante la operación de descarga.
Puede especificar uno de los valores siguientes para esta opción:
NONE
Es el valor por omisión.
Este valor representa un valor decimal positivo sin un signo.
PLUS
Especifica que un valor decimal positivo se representa mediante un signo '+'.
BLANK
Especifica que un valor decimal positivo se representa mediante un signo en blanco en lugar de un signo '+'.
Si especifica la opción DECPLUSBLANK para la operación de carga, la salida no se verá afectada.
Ejemplos de una prueba de tabla con ddl (decimal (6,2)) y todos los valores disponibles para la opción DECPLUSBLANK:
1234
-4563
  • Cree una tabla externa '/tmp/unload.txt' utilizando (DECPLUSBLANK NONE) como selección * de la prueba:
    unload.txt
    1234.00
    -4563.00
  • Cree una tabla externa '/tmp/unload.txt' utilizando (DECPLUSBLANK PLUS) como selección * de la prueba:
    unload.txt
    +1234.00
    -4563.00
  • Cree una tabla externa '/tmp/unload.txt' utilizando (DECPLUSBLANK BLANK) como selección * de la prueba:
    unload.txt
     1234.00
    -4563.00
DELIMITER o COLUMN_DELIMITER
Carácter que se utiliza para delimitar los campos de un registro de entrada o de salida. El valor predeterminado es una barra vertical ('|').
Puede especificar un carácter en el rango ASCII de 7 bits (decimal 1 ‑ 127) en cualquiera de las formas siguientes:
  • Como un solo carácter (por ejemplo DELIMITER ';')
  • Especificando su valor decimal ASCII correspondiente (por ejemplo, DELIMITER 59 o DELIMITER '59')
  • Especificando su valor hexadecimal ASCII correspondiente (por ejemplo, DELIMITER x'3B')

El rango decimal 128 - 255 solo está soportado con el archivo de entrada del conjunto de caracteres ISO especificando su valor decimal o hexadecimal ASCII correspondiente. Si el archivo de entrada se encuentra en el conjunto de caracteres UTF8, este rango de valores de delimitador no está soportado.

ENCODING
Tipo de datos en el archivo:
UTF8
El archivo utiliza la codificación UTF8 y solo contiene datos NCHAR o NVARCHAR.
LATIN9
El archivo utiliza la codificación LATIN9 y solo contiene datos CHAR o VARCHAR.
INTERNAL
El archivo utiliza una combinación de ambas codificaciones, UTF8 y LATIN9, o no está seguro del tipo de codificación que se utiliza. El sistema comprueba los datos y los codifica, según sea necesario. Puesto que esta comprobación de los datos reduce el rendimiento general, utilice este valor solo cuando sea necesario. Es el valor por omisión.
DBCS_GRAPHIC
Este valor sólo se permite para una operación de carga, no para una operación de descarga. Si se especifica este valor, también se debe especificar la opción CCSID. Durante la operación de carga, los campos de tipo GRAPHIC o VARGRAPHIC se codifican utilizando el juego de caracteres de doble byte del CCSID especificado; los campos de todos los demás tipos se codifican utilizando el juego de caracteres de bytes mixtos del CCSID especificado.
Nota: ENCODING no se puede establecer en DBCS_GRAPHIC para un archivo DEL creado por el programa de utilidad EXPORT porque dichos archivos DEL se han codificado utilizando un solo juego de caracteres.
Las opciones CCSID y ENCODING se excluyen entre sí cuando el valor de la opción ENCODING es UTF8, LATIN9 o INTERNAL.
ESCAPECHAR o ESCAPE_CHARACTER
Qué carácter se debe considerar como un carácter de escape. Un carácter de escape indica que el carácter que le sigue, que de otra forma se trataría como un carácter delimitador de campo o un carácter de secuencia de fin de fila, se trata como parte del valor del campo. El carácter de escape se ignora para los datos de serie gráfica. No hay ningún valor predeterminado.
FILLRECORD
Para una operación de carga. el campo de un registro se carga en las columnas de una tabla de destino de izquierda a derecha. Esta opción especifica si un registro de entrada puede contener menos campos que las columnas definidas para la tabla de destino:
TRUE o ON
Una línea de entrada puede contener menos campos, siempre que todas las columnas para las cuales falta un valor admitan nulos. Los valores perdidos se establecen en NULL. Si una o más columnas para las cuales falta un valor no admite nulos, el registro se rechaza.
FALSE o OFF
Una línea de entrada que contiene menos columnas se rechaza. Es el valor por omisión.
FORMAT o FILE_FORMAT
Formato de datos del archivo de origen:
TEXT
Los datos que se van a cargar o descargar están en formato de texto delimitado. Es el valor por omisión.
INTERNAL
Los datos se encuentran en un formato interno utilizado por Netezza Platform Software (NPS). Este valor solo es válido cuando se cargan datos de un archivo a la base de datos, no cuando se descargan datos en un archivo. Si se especifica este valor para la opción FORMAT, también se deben especificar las opciones siguientes, y solo estas opciones:
  • DATAOBJECT o FILE_NAME.
  • REMOTESOURCE, SWIFT o S3. Si se especifica la opción REMOTESOURCE, debe tener el valor LOCAL o YES.
  • COMPRESS. Esto se debe establecer en GZIP.
FIXED
Los datos están en formato de longitud fija.
Los archivos con formato de longitud fija utilizan posiciones ordinales, que son desplazamientos, para identificar dónde están los campos dentro del registro.
Nota:
  • Las opciones de tabla externa siguientes no están soportadas para el formato de longitud fija:
    • Delimiter
    • Encoding
    • EscapeChar
    • FillRecord
    • IgnoreZero
    • IncludeZeroSeconds
    • QuotedValue
    • RequireQuotes
    • TimeExtraZeros
    • TruncString
  • No hay ningún delimitador de campo.
  • Es necesario un delimitador de fin de registro incluso para el último registro.
  • Normalmente, los datos en archivos con formato de longitud fija no tienen delimitadores decimales ni delimitadores de tiempo porque los delimitadores no son necesarios y utilizan espacio.
  • Las ubicaciones de los delimitadores son fijas y se especifican en la definición del diseño porque los campos tienen un tamaño fijo. Esta definición se proporciona con el archivo de datos de formato de longitud fija.
  • Para cargar datos de formato fijo, debe definir el tipo de datos de destino para los campos y las ubicaciones dentro del registro.
  • No tiene que cargar todos los campos en un archivo con formato de longitud fija. Puede omitirlos utilizando la especificación de relleno.
  • El orden de los campos en el archivo de datos debe coincidir con el orden de la tabla de destino. De forma alternativa, debe crear una definición de tabla externa que especifique el orden de los campos como columnas de base de datos.
  • Puede cambiar el orden del campo utilizando una definición de tabla externa en combinación con una sentencia insert-select.
  • Normalmente, los valores desconocidos o los valores nulos se representan mediante patrones de datos conocidos que se clasifican como que representan nulos.
Los parámetros siguientes se aplican cuando la opción FORMAT de la tabla externa está establecida en FIXED:
LAYOUT
Obligatorio.
Un diseño es una colección ordenada de definiciones de zona o de campo. Define la ubicación de los campos del registro de entrada.
Especifique definiciones de zona separadas por comas entre llaves { }.
Cada definición de zona está formada por cláusulas no solapadas que se excluyen entre sí.
Sin valor predeterminado.
Las cláusulas deben estar en el orden siguiente, incluso si algunas de ellas son opcionales y pueden estar vacías:
USE TYPE
Opcional.
Indica si una zona es una zona de datos normal, una zona de referencia o una zona de relleno.
Para las zonas de datos, este valor se omite.
Una zona de referencia se especifica como REF. Esta especificación implica que la zona está referenciada por otra zona para la longitud de zona o los valores nulos.
Una zona de relleno se especifica como FILLER. Las zonas de relleno especifican que los bytes o los caracteres se tratan como rellenos en un archivo de datos.
NAME
Opcional.
El nombre de la zona.
Actualmente, esta definición no se utiliza. Normalmente, se proporciona para identificar el campo.
TYPE
Opcional.
Define el tipo de la zona.
Si no especifica el tipo, obtiene el valor predeterminado del tipo correspondiente de una columna de tabla.
Los valores válidos son los siguientes:
  • CHAR
  • VARCHAR
  • NCHAR
  • NVARCHAR
  • SMALLINT
  • BIGINT
  • BINARY
  • VARBINARY
  • GRAPHIC
  • VARGRAPHIC
  • FLOAT
  • DOUBLE
  • DEC, NUM o NUMERIC
  • DECFLOAT
  • BOOLEAN
  • DATE
  • TIME
  • TIMESTAMP
STYLE
Opcional.
Define la representación de zona.
La representación predeterminada se basa en el tipo de zona y la opción de formato.
Todos los demás estilos solo son válidos para sus tipos de zona no textuales correspondientes.
Los valores válidos son los siguientes:
  • INTERNAL

    Solo es válido para las zonas textuales, es decir, char, varchar, nchar y nvarchar.

  • DECIMAL

    Válido para los tipos de zona de enteros o numérico.

  • DECIMALDELIM <'decimal-delim'>

    Válido para los tipos de zona de estilo numérico, flotante, doble y de tiempo (hora e indicación de fecha y hora).

  • FLOATING

    Válido para los tipos de zona flotante o doble.

  • EXPONENTIAL

    Válido para los tipos de zona flotante o doble.

  • YMD <'date-delim'>

    Válido para las zonas de fecha, incluyendo otros estilos de datos que están soportados para las opciones de tabla externa DateStyle y DateDelim.

  • 12Hour <'time-delim'>

    Válido para las zonas de tiempo, incluyendo otros estilos de tiempo que están soportados para las opciones de tabla externa TimeStyle y TimeDelim.

  • 24Hour <'time-delim'>

    Válido para las zonas de tiempo, incluyendo otros estilos de tiempo que están soportados para las opciones de tabla externa TimeStyle y TimeDelim.

  • YMD <'date-delim'> 24Hour <'time-delim'>

    Válido para las zonas de indicación de fecha y hora, incluyendo otras combinaciones de los estilos de fecha y hora que están soportados para las opciones de tabla externa DateStyle, DateDelim, TimeStyle y TimeDelim.

  • TRUE_FALSE, Y_N, 1_0

    Válido para zonas booleanas, incluyendo otros estilos booleanos que están soportados para la opción de tabla externa BoolStyle. El estilo debe estar en consonancia con el formato.

LENGTH
Opcional.
Se especifica como bytes o caracteres seguidos por el número o la referencia interna a la zona de referencia.
Número de bytes o caracteres tal como se han proporcionado o como la zona de referencia ha hecho referencia a los mismos.
Para las zonas de referencia o las zonas de relleno, no puede utilizar referencias internas. Para las zonas de referencia, el número de bytes especifica cómo se leen los datos del archivo de datos para obtener el valor referido.
Puede utilizar signos más y signos menos como se indica a continuación:
BYTES @2 + 10
BYTES @2 - 10
NULLIF
Opcional.
Definición del atributo NULLESS de zona.
Especifica un patrón de datos conocido dentro del campo que, cuando está presente, significa que el campo es nulo.
La longitud es igual o menor que el ancho de columna. La longitud máxima es 39 bytes.
Puede utilizar los tipos de referencias siguientes:
@
Referencia interna a zonas numéricas.
Coincidencia exacta del valor numérico.
&
Referencia externa
Coincidencia exacta del valor especificado.
&&
Referencia aislada.
Los espacios iniciales y los espacios finales se van a omitir con la coincidencia de serie exacta.
Los nulos se detallan en los ejemplos siguientes:
Tabla 2. Ejemplo de diseño
Tipo de uso Nombre Tipo Estilo Longitud Nullif
NA f1 int4 DECIMAL Bytes 10 Nullif & = 0
NA f2 fecha AMD Bytes 10 Nullif &= '2000-10-10'
NA f3 char(20) INTERNAL Chars 10 Nullif &&='ab'
Relleno f4 char(10) NA Bytes 10 NA
Recuerde:
  • La zona referida en una cláusula de longitud debe ser de tipo entero.
  • No debe especificar la opción NULLIF para las zonas de referencia o las zonas de relleno.
  • Las zonas de referencia y las zonas de relleno no pueden tener longitudes variables.
  • La longitud variable no puede hacerse referencia a sí misma.
  • Defina la zona referida en una cláusula de longitud como REF.
  • Las referencias de cláusula de longitud solo pueden utilizar la referencia INTERNAL (@). Las referencias externas o aisladas no están soportadas.
  • Entre la zona referida de una cláusula de longitud y la propia zona, las zonas de referencia no están permitidas.
  • Si el tipo de referencia es INTERNAL (@), la cláusula NULLIF no puede hacerse referencia a sí misma.
  • Si la columna no puede adoptar un valor nulo, no puede tener la cláusula NULLIF.
  • La longitud variable solo está permitida para el tipo de serie de zonas.
  • La cláusula NULLIF solo puede hacer referencia a las zonas REF o las propias zonas.
  • Entre la zona a la que hace referencia la cláusula NULLIF y la propia zona, no están permitidas otras zonas referidas, excepto para la zona a la que se hace referencia en la cláusula de longitud.
  • La longitud de registro puede apuntar a la zona 1 solo para la referencia.
  • Una REF debe tener una zona que haga referencia a la misma.
  • La cláusula NULLIF puede tener referencias externas solo si la zona REF no es un entero.
Recordlength
Especifica la longitud de todo el registro, donde los bytes de indicador de nulo se incluyen si existen, y el delimitador del registro se excluye, si existe.
El valor es un entero constante.
El valor también puede ser una referencia interna a la zona de referencia en la definición de diseño.
No hay ningún valor predeterminado.
Puede utilizar signos más y signos menos para una referencia interna de la forma siguiente:
RECORDLENGTH @1 + 10
RECORDLENGTH @1 - 10
IGNOREZERO o TRIM_NULLS
Especifica si el valor binario cero en los campos CHAR y los campos VARCHAR se debe descartar.
TRUE o ON
El valor de byte cero se ignora.
FALSE o OFF
El valor de byte cero no se ignora. Es el valor por omisión.
KEEP
El valor binario cero se acepta y se permite como parte del campo de entrada.
INCLUDEHEADER o COLUMN_NAMES
Para una operación de descarga, indica si los nombres de columna de tabla se van a incluir como cabeceras en el archivo de tabla externa:
TRUE o ON
Los nombres de columna de tabla se van a incluir como cabeceras.
FALSE o OFF
Los nombres de columna de tabla no se van a incluir como cabeceras. Es el valor por omisión.
INCLUDEZEROSECONDS
Para una operación de descarga, indica si se va a especificar 00 como el valor para los segundos cuando no hay disponible ningún valor para segundos.
TRUE o ON
Especifique 00 como el valor para los segundos.
FALSE o OFF
No especifique un valor para los segundos. Es el valor por omisión.
LOGDIR o ERROR_LOG
Directorio en el cual se van a escribir los archivos siguientes:
<base_datos>.<esquema>.<nombre-tabla-externa>.<nombre-archivo>.<manejo-aplicaciones>.<id>.bad
Archivo que contiene registros rechazados (es decir, los registros que no se han podido procesar).
<base_datos>.<esquema>.<nombre-tabla-externa>.<nombre-archivo>.<manejo-aplicaciones>.<id>.log
Archivo de registro.
El valor predeterminado es el directorio en el cual se va a escribir el archivo de tabla externa. Si la longitud del nombre que se construye para un archivo a .bad o .log excediera el máximo permitido, el nombre del archivo que contiene la tabla externa (indicado mediante <nombre-archivo>) se trunca para que no se exceda el máximo.

Si se genera un archivo .log o .bad al realizar una operación en una partición, se añade como sufijo al nombre del archivo generado un punto seguido por el número de partición de 3 dígitos.

MAXERRORS o MAX_ERRORS
Para una operación de carga, el umbral para el número de registros rechazados en el que el sistema detiene el proceso y retrotrae la carga inmediatamente. El valor predeterminado es 1 (es decir, un solo registro rechazado genera una retrotracción).
Para un formato de longitud fija, se aplican las condiciones siguientes:
  • El analizador informa de errores para cada campo o zona, en lugar de un error para la fila.
  • Se pueden notificar de varios errores para la misma fila.
  • Cuando el analizador detecta un error en un campo o en una zona, se recupera utilizando la longitud del campo o la longitud de la zona. Continúa desde el siguiente campo o zona, hasta que se alcanza el final del registro, o se produce un error irrecuperable, o se alcanza el límite MaxErrors.
  • Los errores irrecuperables incluyen los errores siguientes:
    • Discrepancia de RecordLength.
    • RecordDelimiter no se ha encontrado.
    • El valor RecordLength no es válido, es decir, el valor es negativo o cero.
    • La longitud de zona no es válida, es decir, el valor es negativo.
    • El byte inicial UTF-8 no es válido.
    • Los bytes de continuación UTF-8 no son válidos.
MAXROWS o MAX_ROWS
Si está establecido en un entero positivo, esto especifica el número máximo de registros (filas) en la tabla externa que se van a procesar. Si está establecido en 0 (el valor predeterminado), no hay ningún límite y se procesan todas las filas. Durante una operación de carga, si MAXROWS está establecido en un valor positivo, una vez que se haya procesado ese número de filas, independientemente de si se han rechazado u omitido algunas de las filas, el sistema finaliza la operación de carga y confirma todos los registros insertados.
MERIDIANDELIM
Un carácter de un solo byte que separa el componente de segundos de la señal AM o de la señal PM en los formatos delimitados o sin limitar de 12 horas de un valor de hora.
El delimitador predeterminado es un espacio (' ').
Entre el componente de segundos y la señal AM o la señal PM, no es necesario un delimitador. Por ejemplo, los dos valores siguientes son válidos:
1:02:46.12345 AM
1:02:46.12345AM
NOLOG
Especifica si se crea el archivo .log para la tabla externa.
Esta opción no se aplica a los archivos .bad.
Los valores posibles son:
TRUE
No se crea ningún archivo .log.
FALSE
Se crea el archivo .log.
Es el valor por omisión.
NULLVALUE o NULL_VALUE
Serie UTF-8 de un máximo 4 bytes que se va a utilizar para indicar un valor nulo. El valor predeterminado es 'NULL'.
PARTITION
Si tiene un despliegue de MPP, una tabla externa se puede particionar en varios archivos. Al nombre de cada uno de los archivos de datos que engloban una tabla externa se le añade un sufijo con un punto seguido por un número de 3 dígitos del 000 a 999 que indica el número de la partición. Por ejemplo, si una tabla externa con el nombre dataFile.txt se divide en tres particiones, los archivos que contienen tienen los nombres dataFile.txt.000, dataFile.txt.001 y dataFile.txt.002. Se debe poder acceder a estos archivos desde todos los miembros.
Para una tabla externa particionada, la opción PARTITION especifica a qué partición o particiones se aplica la sentencia:
PARTITION ALL
La sentencia se aplica a todas las particiones que componen la tabla externa. Para una operación de descarga, este es el único valor que está autorizado.
PARTITION (n TO n)
La sentencia se aplica a todas las particiones del rango especificado, por ejemplo, PARTITION (54 TO 62).
PARTITION (n,n,…)
La sentencia solo se aplica a la partición o particiones especificadas, por ejemplo, PARTITION (53) o PARTITION (51,57,58). Si se especifica más de un número de partición, éstos deben estar en orden ascendente (sqlcode SQL0263N con SQLSTATE=42615) y no puede haber duplicados (sqlcode SQL0265N con SQLSTATE=42615).

Si se genera un archivo .log o .bad al realizar una operación en una tabla externa particionada, se añade un sufijo al nombre del archivo generado con un punto seguido por el número de partición de 1 a 3 dígitos.

Si tiene un despliegue MPP y no se ha especificado la opción PARTITION, la tabla externa se trata como una tabla de una única partición en el miembro coordinador. A los nombres del archivo de tabla externa y de los archivos .log y .bad no se les añade un sufijo con un número de partición.

Si no tiene un despliegue MPP, la opción PARTITION se puede especificar, pero solo con el valor ALL, (0 a 0) o (0) (sqlcode SQL0644N con SQLSTATE=42615). No tendrá ningún efecto.

Las opciones REMOTESOURCE y PARTITION se excluyen entre sí.

QUOTEDNULL
Para una operación de carga, cómo interpretar un valor que está entrecomillado con comillas simples o comillas dobles y que coincide con el valor nulo especificado por la opción NULLVALUE o NULL_VALUE (por ejemplo, "NULL" o 'NULL'):
TRUE o ON
El valor se interpreta como un valor nulo. Es el valor por omisión.
FALSE o OFF
El valor se interpreta como una serie de caracteres.
QUOTEDVALUE o STRING_DELIMITER
Indica si los valores de datos se van a entrecomillar.
SINGLE o YES
Los valores de datos se entrecomillan con comillas simples (').
DOUBLE
Los valores de datos se entrecomillan con comillas dobles (").
NO
Los valores de datos no están entrecomillados. Es el valor por omisión.
RECORDDELIM o RECORD_DELIMITER
Literal de serie que se va a interpretar como delimitador de fila (registro). El valor predeterminado es '\n'. Cuando CRINSTRING está establecido en TRUE, RECORDDELIM no puede contener un carácter de retorno de carro (CR).
REMOTESOURCE
Lugar donde reside el archivo de tabla externa y, si reside en un sistema remoto, si se van a comprimir los datos del archivo.
LOCAL
El archivo reside en el servidor local, es decir, el sistema que aloja la base de datos. Es el valor por omisión.
YES
El archivo reside en un sistema distinto al servidor local. Por ejemplo, especifique YES si un sistema cliente está conectado a la base de datos y el archivo reside en ese sistema. Los datos de archivo no están comprimidos antes de transferirse.
GZIP
Similar a YES, excepto que los datos de archivos se comprimen utilizando el algoritmo de compresión GZIP antes de que se transfieran los datos, y se descomprimen después de que se hayan recibido. Esto mejora el rendimiento general cuando se está transfiriendo una gran cantidad de datos comprimibles.
LZ4
Similar a YES, excepto que los datos de archivo se comprimen utilizando el algoritmo de compresión LZ4 antes de que se transfieran los datos, y se descomprimen después de que se hayan recibido. Esto mejora el rendimiento general cuando se está transfiriendo una gran cantidad de datos comprimibles.

Las opciones REMOTESOURCE, SWIFT y S3 se excluyen entre sí. Las opciones REMOTESOURCE y PARTITION se excluyen entre sí. La opción COMPRESS no se puede especificar si el valor de la opción REMOTESOURCE es GZIP o LZ4.

REQUIREQUOTES
Indica si las comillas son obligatorias:
TRUE o ON
Las comillas son obligatorias. La opción QUOTEDVALUE se debe establecer en YES, SINGLE o DOUBLE.
FALSE o OFF
Las comillas no son obligatorias. Es el valor por omisión.
SKIPROWS o SKIP_ROWS
Para una operación de carga, el número de filas que se omitirán antes de empezar a cargar los datos. El valor predeterminado es 0. Puesto que las filas omitidas se procesan antes de que se omitan, una fila omitida sigue siendo capaz de provocar un error de proceso.
SOCKETBUFSIZE
Tamaño, en bytes, de los fragmentos de datos que se leen del archivo de origen. El rango de valores válidos oscila de 64 KB ‑ 800 MB. Si especifica un valor fuera de este rango, el valor se establece en el valor válido más cercano. El valor predeterminado es 8 MB.
STRICTNUMERIC
Para una operación de carga, cómo tratar un valor que se va a insertar en un campo DECIMAL cuando su escala excede el definido por el campo:
TRUE o ON
La fila que contiene el valor que se va a insertar se rechaza. Por ejemplo, si alguno de los valores se iba a cargar en un campo DECIMAL(5,3), la fila que contiene ese valor se rechazaría:
12.666666666
-98.34496862785
0.00089
FALSE o OFF
Se acepta la fila que contiene el valor que se va a insertar y se trunca la parte de la fracción decimal que excede la escala definida para el campo. Es el valor por omisión. Por ejemplo, los valores del ejemplo anterior se convertirían a:
12.666
-98.344
0.000
SWIFT
Especifica que el archivo de datos de origen se encuentra en un almacén de objetos Swift. Las opciones REMOTESOURCE, SWIFT y S3 se excluyen entre sí. Utilice la opción DATAOBJECT para especificar el nombre de archivo.
Sintaxis:
SWIFT (punto final, claveaut1, claveaut2, grupo)
donde:
punto final
Una serie de caracteres que especifica el URL del servicio web SWIFT.
claveaut1
Una serie de caracteres que especifica el ID de acceso o el nombre de usuario de la cuenta de pila abierta de Swift que se utiliza para validar el usuario.
claveaut2
Una serie de caracteres que especifica la contraseña de la cuenta de pila abierta Swift que se utiliza para validar el usuario.
grupo
El nombre del contenedor (grupo) de pilas abiertas Swift en el cual reside el archivo.
Ejemplo:
CREATE EXTERNAL TABLE exttab1(a int) using
  (dataobject 'datafile1.dat'
   swift('https://dal05.objectstorage.softlayer.net/auth/v1.0/',
    'XXXOS123456-2:xxx123456',
    'b207c6e974020737d92174esdf6d5be9382aa4c335945a14eaa9172c70f8df16',
    'my_dev'
   )
  )
S3
Especifica que el archivo de datos de origen se encuentra en un almacén de objetos compatible con S3. Las opciones REMOTESOURCE, SWIFT y S3 se excluyen entre sí. Utilice la opción DATAOBJECT para especificar el nombre de archivo.
Sintaxis:
S3 (punto finalendpoint, claveaut1, claveaut2, grupo)
donde:
punto final
Serie de caracteres que especifica el URL del servicio web compatible con S3.
claveaut1
Serie de caracteres que especifica el ID de clave de acceso S3 de las claves de acceso utilizadas para validar el usuario y todas las acciones de usuario. Para IBM Cloud Object Storage, es el ID de clave de acceso de las credenciales HMAC.
claveaut2
Serie de caracteres que especifica la clave secreta S3 de las claves de acceso que se utilizan para validar el usuario y todas las acciones de usuario. Para IBM Cloud Object Storage, es la clave de acceso secreta de las credenciales HMAC.
grupo
Nombre del grupo S3 en el que reside el archivo.
Nota: En IBM Cloud Object Storage, para crear las credenciales HMAC, al crear las nuevas credenciales de servicio, especifique {"HMAC:true} en el campo Add Inline Configuration Parameters (Añadir parámetros de configuración en línea).
Ejemplo en el que se utiliza AWS S3:
CREATE EXTERNAL TABLE exttab2(a int) using
  (dataobject 'datafile2.dat'
   s3('s3.amazonaws.com',
    'XXXOS123456-2:xxx123456',
    'bs07c6e974040737d92174e5e96d5be9382aa4c33xxx5a14eaa9172c70f8df16',
    'my_dev'
   )
  )
Ejemplo en el que se utiliza IBM Cloud Object Storage:
CREATE EXTERNAL TABLE exttab2(a int) using
  (dataobject 'datafile2.dat'
   s3('s3-api.us-geo.objectstorage.softlayer.net',
    '1a2bkXXXsaddntLo0xX0',
    'XXxxiEPjJ7T7WBUz74E6abcdABCDE8Q7RgU4gYY9',
    'my_dev'
   )
  )
TIMEDELIM
Carácter de un solo byte que va a separar los componentes de tiempo (horas, minutos y segundos). El valor predeterminado es ':'. Si TIMEDELIM está establecido en una serie vacía, las horas, minutos y segundos se deben especificar como números de dos dígitos. Las opciones TIMESTAMP_FORMAT y TIMEDELIM se excluyen entre sí.
TIMEROUNDNANOS o TIMEEXTRAZEROS
Nota: Esta opción solo se aplica a las columnas TIMESTAMP.
Especifica si los registros que contienen valores de hora cuya precisión distinta a cero excede seis posiciones decimales se van a aceptar (y se van a redondear al microsegundo más cercano) o si se van a rechazar:
TRUE
Se aceptan todos los registros. Sus valores de hora se redondean al microsegundo más cercano.
FALSE
Solo se aceptan los registros que se pueden almacenar sin una pérdida de precisión (por ejemplo, '08.15.32.123' o '08.15.32.12345600000', pero no '08.15.32.1234567'). Se rechazan todo los demás registros. Es el valor por omisión.
TIMESTYLE
El formato de hora que se va a utilizar en el archivo de datos:
24HOUR
Formato de 24 horas, por ejemplo, 23:55. Es el valor por omisión.
12HOUR
Formato de 12 horas, por ejemplo, 11:55 PM. Una señal AM o PM puede ir precedida por una solo espacio y no distingue entre mayúsculas y minúsculas.
La opción TIMESTYLE y la opción TIME_FORMAT o TIMESTAMP_FORMAT se excluyen entre sí.
TIMESTAMP_FORMAT
Formato del campo de indicación de fecha y hora en el archivo de datos. El valor puede adoptar cualquier serie de forma aceptado por Función escalar TIMESTAMP_FORMAT. El valor predeterminado es 'AAAA-MM-DD HH.MI.SS'. La opción TIMESTAMP_FORMAT y la opción TIMEDELIM, DATEDELIM, TIMESTYLE, o DATESTYLE se excluyen entre sí.
TIME_FORMAT
Formato del campo de hora en el archivo de datos. El valor puede adoptar cualquier serie de formato de hora aceptado por Función escalar TIMESTAMP_FORMAT. El valor predeterminado es HH.MI.SS. La opción TIME_FORMAT y la opción TIMEDELIM o TIMESTYLE se excluyen entre sí.
TRIMBLANKS
Cómo una tabla externa debe tratar los espacios en blanco iniciales o finales (es decir, los caracteres de espacio iniciales o finales) en una serie:
LEADING
Se eliminan todos los espacios en blanco iniciales (es decir, los espacios en blanco que preceden el primer carácter no en blanco).
TRAILING
Se eliminan todos los espacios en blanco al final (es decir, los espacios en blanco que siguen al último carácter no en blanco).
BOTH
Se eliminan todos los espacios en blanco al principio y al final.
NONE
No se elimina ningún espacio en blanco. Es el valor por omisión.
Al leer datos de un archivo y cargarlos en una tabla externa:
  • Si se ha especificado QUOTEDVALUE o STRING_DELIMITER con los valores SINGLE, YES o DOUBLE, no se eliminan los espacios en blanco iniciales y finales entrecomillados.
  • Para los datos CHAR y NCHAR, los valores TRAILING o BOTH no tendrán ningún efecto sobre los espacios en blanco al final, porque la serie se volverá a rellenar automáticamente con espacios en blanco al final.
TRUNCSTRING o TRUNCATE_STRING
Cómo procesa el sistema una serie CHAR o VARCHAR que excede su tamaño de almacenamiento declarado:
TRUE
El sistema trunca un valor de serie que excede su tamaño de almacenamiento declarado.
FALSE
El sistema devuelve un error cuando un valor de serie excede su tamaño de almacenamiento declarado. Es el valor por omisión.
Y2BASE
El año que es el inicio del rango de 100 años. Los años que se especifican como 2 dígitos se cuentan a partir de este año. El valor predeterminado es 2000. Esta opción se debe especificar cuando DATESTYLE está establecido en Y2MD, MDY2, DMY2, MONDY2 o DMONY2.
Tabla 3. Opciones
Opción Valor por omisión Se aplica a la carga Se aplica a la descarga
BOOLSTYLE o BOOLEAN_STYLE 1_0 S S
CARDINALITY (no hay valor predeterminado) S S
CCSID (no hay valor predeterminado) S S
COMPRESS NO N S
CRINSTRING FALSE S S
CTRLCHARS FALSE S N
DATAOBJECT o FILE_NAME (no hay valor predeterminado) S S
DATEDELIM '-' S S
DATESTYLE AMD S S
DATE_FORMAT AAAA-MM-DD S S
DECIMALDELIM o DECIMAL_CHARACTER '.' S S
DELIMITER '|' S S
ENCODING INTERNAL S S1
ESCAPECHAR o ESCAPE_CHARACTER (no hay valor predeterminado) S S
FILLRECORD FALSE S N
FORMAT o FILE_FORMAT TEXT S S
IGNOREZERO o TRIM_NULLS FALSE S N
INCLUDEHEADER o COLUMN_NAMES FALSE S S
INCLUDEZEROSECONDS FALSE S S
LOGDIR o ERROR_LOG directorio de destino del archivo de tabla externa S N
MAXERRORS o MAX_ERRORS 1 S N
MAXROWS o MAX_ROWS 0 S N
NULLVALUE o NULL_VALUE 'NULL' S S
PARTITION (no hay valor predeterminado) S S
QUOTEDNULL TRUE S N
QUOTEDVALUE NO S N
RECORDDELIM o RECORD_DELIMITER '\n' S N
REMOTESOURCE LOCAL S S
REQUIREQUOTES FALSE S N
SKIPROWS o SKIP_ROWS 0 S N
SOCKETBUFSIZE 8 MB S S
STRICTNUMERIC FALSE S N
SWIFT (no hay valor predeterminado) S S
S3 (no hay valor predeterminado) S S
TIMEDELIM ':' S S
TIMEROUNDNANOS o TIMEEXTRAZEROS FALSE S N
TIMESTAMP_FORMAT 'AAAA-MM-DD HH.MI.SS' S S
TIMESTYLE 24HOUR S S
TIME_FORMAT HH.MI.SS S S
TRIMBLANKS NONE S S
TRUNCSTRING o TRUNCATE_STRING FALSE S N
Y2BASE 2000 S N
1 Solo para los valores INTERNAL, UTF8 y LATIN9.
tabla-unida

Una tabla-unida especifica un conjunto resultante intermedio que es el resultado de una o varias operaciones de unión. Para obtener más información, consulte el apartado tabla-unida.

especificación-período

Una especificación-período identifica una tabla de resultados intermedia que consta de las filas de la tabla referida donde el período coincide con la especificación. Una especificación-período se puede especificar siguiendo el nombre de una tabla temporal o el nombre de una vista. No se debe especificar el mismo nombre de período más de una vez para la misma referencia de tabla (SQLSTATE 428HY). La aplicación de las especificaciones de período deriva las filas de la referencia de tabla.

Si la tabla es una tabla temporal de período de sistema y no se especifica una especificación-período para el período SYSTEM_TIME, la referencia de tabla incluye todas las filas actuales y no incluye ninguna fila histórica de la tabla. Si la tabla es una tabla temporal de período de aplicación y no se especifica una especificación-período para el período BUSINESS_TIME, la referencia de tabla incluye todas las filas de la tabla. Si la tabla es una tabla bitemporal y no se especifica una especificación-período tanto para SYSTEM_TIME como para BUSINESS_TIME, la referencia de tabla incluye todas las filas actuales de la tabla y no incluye ninguna fila histórica de la tabla.

Si la referencia de tabla es una referencia-vista-exclusiva, la aplicación de las especificaciones de período deriva las filas de la referencia de vista a todas las tablas temporales a las que se accede al calcular la tabla de resultados de la vista. Si la vista no accede a ninguna tabla temporal, la especificación-período no tiene ningún efecto en la tabla de resultados de la vista. Si se utiliza la especificación-período, la definición de vista o cualquiera de las definiciones de vista a las que se hace referencia al calcular la tabla de resultados de la vista no debe incluir ninguna referencia a las funciones de SQL compilado o funciones externas con una indicación de acceso a datos distinta de NO SQL (SQLSTATE 428HY).

Si el registro especial CURRENT TEMPORAL SYSTEM_TIME está establecido en un valor distinto del valor nulo, no debe especificarse una especificación-período que haga referencia a SYSTEM_TIME para la referencia de tabla o la referencia de vista, a no ser que el valor en vigor para la opción de vinculación SYSTIMESENSITIVE sea NO (SQLSTATE 428HY).

Si el registro especial CURRENT TEMPORAL BUSINESS_TIME está establecido en un valor distinto del valor nulo, no debe especificarse una especificación-período que haga referencia a BUSINESS_TIME para la referencia de tabla o la referencia de vista, a no ser que el valor en vigor para la opción de vinculación BUSTIMESENSITIVE sea NO (SQLSTATE 428HY).

FOR SYSTEM_TIME

Especifica que el período SYSTEM_TIME se utilice para la especificación-período. Si se especifica la cláusula después de un nombre-tabla, la tabla debe ser una tabla temporal de período de sistema (SQLSTATE 428HY). No debe especificarse FOR SYSTEM_TIME si el valor del registro especial CURRENT TEMPORAL SYSTEM_TIME no es el valor nulo y la opción de vinculación SYSTIMESENSITIVE está establecida en YES (SQLSTATE 428HY).

FOR BUSINESS_TIME

Especifica que el período BUSINESS_TIME se utilice para la especificación-período. Si se especifica la cláusula después de un nombre-tabla, BUSINESS_TIME debe ser un período definido en la tabla (SQLSTATE 4274M). No se debe especificar FOR BUSINESS_TIME si el valor del registro especial CURRENT TEMPORAL BUSINESS_TIME no es el valor nulo y la opción de vinculación BUSTIMESENSITIVE está establecida en YES (SQLSTATE 428HY).

valor, valor1, y valor2

Las expresiones valor, valor1 y valor2 devuelven el valor nulo o un valor de uno de los tipos de datos incorporados siguientes (SQLSTATE 428HY): DATE, TIMESTAMP o una serie de caracteres que no sea CLOB ni DBCLOB. Si el argumento es una serie de caracteres, debe ser una representación en forma de serie de caracteres de una indicación de fecha y hora o de una fecha (SQLSTATE 22007). Para conocer los formatos válidos de las representaciones de serie de los valores de indicación de fecha y hora, consulte Representación mediante series de los valores de fecha y hora en el tema Valores de fecha y hora.

Cada expresión puede contener alguno de los operandos soportados siguientes (SQLSTATE 428HY):
  • Constante
  • Registro especial
  • Variable. Para obtener detalles, consulte Referencias a variables en Identificadores.
  • Marcador de parámetro
  • Función escalar cuyos argumentos sean operandos soportados (no se pueden utilizar funciones definidas por el usuario y funciones no deterministas)
  • Especificación CAST donde el operando de conversión es un operando soportado
  • Expresión que utiliza operadores y operandos aritméticos
AS OF valor

Especifica que la referencia de tabla incluye cada fila para la que el valor de la columna de inicio del período especificado es inferior o igual a valor y el valor de la columna de fin del período es superior a valor. Si valor es el valor nulo, la referencia de tabla es una tabla vacía.

Ejemplo: La consulta siguiente devuelve la información de cobertura de seguro para la póliza de seguro número 100 del 31 de agosto de 2010.
SELECT coverage FROM policy_info FOR BUSINESS_TIME
		AS OF '2010-08-31' WHERE policy_id = '100'
FROM valor1 TO valor2

Especifica que la referencia de tabla incluye filas que existen durante el período especificado desde valor1 hasta valor2. Se incluye una fila en la referencia de tabla si el valor de la columna de inicio para el período especificado en la fila es inferior a valor2 y el valor de la columna final para el período especificado en la fila es superior a valor1. La referencia de tabla contiene cero filas si valor1 es superior o igual a valor2. Si valor1 o valor2 es un valor nulo, la referencia de tabla es una tabla vacía.

Ejemplo: La consulta siguiente devuelve la información de cobertura de seguro para la póliza de seguro 100 durante el año 2009 (desde el 1 de enero de 2009 a las 00:00 hasta antes del 1 de enero de 2010).
SELECT coverage FROM policy_info FOR BUSINESS_TIME
		FROM '2009-01-01' TO '2010-01-01' WHERE policy_id = '100'
BETWEEN valor1 AND valor2

Especifica que la referencia de tabla incluye filas en las que el período especificado se solapa con cualquier punto en el tiempo entre valor1 y valor2. Se incluye una fila en la referencia de tabla si el valor de la columna de inicio para el período especificado en la fila es inferior o igual a valor2 y el valor de la columna final para el período especificado en la fila es superior a valor1. La referencia de tabla contiene cero filas si valor1 es superior a valor2. Si valor1 es igual a valor2, la expresión es equivalente a AS OF valor1. Si valor1 o valor2 es un valor nulo, la referencia de tabla es una tabla vacía.

Ejemplo: La consulta siguiente devuelve la información de cobertura de seguro para la póliza de seguro número 100 durante el año 2008 (entre el 1 de enero de 2008 y el 31 de diciembre de 2008, ambos incluidos).
SELECT coverage FROM policy_info FOR BUSINESS_TIME 
		BETWEEN '2008-01-01' AND '2008-12-31' WHERE policy_id = '100'
A continuación, se muestran las alternativas de sintaxis para las cláusulas especificación-período:
  • AS OF TIMESTAMP puede especificarse en lugar de FOR SYSTEM_TIME AS OF
  • VERSIONS BETWEEN TIMESTAMP puede especificarse en lugar de FOR SYSTEM_TIME BETWEEN
cláusula-correlación
Los nombres expuestos de todas las referencias a tabla deben ser exclusivos. Un nombre expuesto es:
  • Un nombre-correlación
  • Un nombre-tabla que no va seguido de un nombre-correlación
  • Un nombre-vista que no va seguido de un nombre-correlación
  • Un apodo que no va seguido de un nombre-correlación
  • Un nombre-alias que no va seguido de un nombre-correlación

Si una cláusula-correlación no sigue una referencia de nombre-función, una expresión-tabla-xml, una expresión de tabla anidada o una referencia-tabla-cambio-datos o si una cláusula-correlación-con-tipo no sigue una referencia de nombre-función, no existe ningún nombre expuesto para esa referencia de tabla.

Cada nombre-correlación se define como designador del nombre-tabla, del nombre-vista, del apodo, de la referencia nombre-función, de la expresión-tablaxml, de la expresión de tabla anidada o de la referencia-tabla-cambio-datos inmediatamente anterior. Cualquier referencia calificada a una columna debe utilizar el nombre expuesto. Si el mismo nombre de tabla, vista o apodo se especifica dos veces, como mínimo una especificación debe ir seguida de un nombre-correlación. El nombre-correlación se utiliza para calificar las referencias a las columnas de la tabla, vista o apodo. Cuando se especifica un nombre-correlación, también se pueden especificar nombres-columna para proporcionar nombres a las columnas de la referencia de tabla. Si la cláusula-correlación no incluye nombres-columna, los nombres de columna expuestos se determinan del modo siguiente:
  • Nombres de columna de la tabla, vista o apodo de referencia cuando la referencia-tabla es un nombre-tabla, nombre-vista, apodo o nombre-alias
  • Nombres de columna especificados en la cláusula RETURNS de la sentencia CREATE FUNCTION cuando la referencia-tabla es una referencia de nombre-función
  • Nombre de columna especificados en la cláusula COLUMNS de la expresión-tablaxml cuando la referencia-tabla es una expresión-tablaxml
  • Nombres de columna expuestos por la selección completa cuando la referencia-tabla es una expresión-tabla-anidada
  • Nombres de columna de la tabla de destino de la sentencia de cambio de datos, junto con las columnas INCLUDE definidas cuando la referencia-tabla es una referencia-tabla-cambio-datos
cláusula-tablesample

La cláusula-tablesample opcional se puede utilizar para obtener un subconjunto aleatorio (un ejemplo) de las filas a partir del nombre-tabla especificado, en lugar del contenido completo de dicho nombre-tabla, para esta consulta. Este muestreo se añade a cualquier predicado especificado en la cláusula-where. A no ser que se especifique la cláusula REPEATABLE opcional, cada ejecución de la consulta generará una muestra distinta, excepto en casos en los que la tabla sea tan pequeña respecto al tamaño de la muestra que cualquier muestra deba devolver las mismas filas. El tamaño de la muestra se controla mediante expresión-numérica1 entre paréntesis, que representa un porcentaje aproximado (P) de la tabla que se va a devolver.

TABLESAMPLE

El método por el que se obtiene la muestra se especifica tras la palabra clave TABLESAMPLE y puede ser BERNOULLI o SYSTEM. El número exacto de filas en el ejemplo puede ser diferente para cada ejecución de la consulta, pero de media es aproximadamente el porcentaje P de la tabla, antes de que cualquier predicado reduzca más el número de filas.

El nombre-tabla debe ser una tabla almacenada. Puede ser un nombre de tabla de consulta materializada (MQT), pero no una subselección o expresión de tabla para la que se haya definido una MQT, porque no hay ninguna garantía de que el gestor de bases de datos vaya a direccionar a la MQT para dicha subselección.

Semánticamente, el muestreo de una tabla se produce antes de cualquier otro proceso de consulta, como por ejemplo aplicar predicados o realizar uniones. Los accesos repetidos de una tabla de muestreo dentro de una sola ejecución de una consulta (como en una unión de bucle anidado o una subconsulta correlacionada) devolverán el mismo ejemplo. Se pueden obtener ejemplos de más de una tabla en una consulta.

BERNOULLI

El muestreo BERNOULLI considera cada fila de forma individual. Incluye cada fila en la muestra con la probabilidad P/100 (donde P es el valor de expresión-numérica1) y ejecuta cada fila con la probabilidad 1 - P/100, independientemente de las demás filas. De modo que si expresión-numérica1 tiene el valor 10, lo que significa una muestra del diez por ciento, cada fila se incluiría con la probabilidad 0,1 y se excluiría con la probabilidad 0,9.

SYSTEM

El muestreo SYSTEM permite al gestor de bases de datos determinar la forma más eficiente de realizar el muestreo. En la mayoría de los casos, el muestreo SYSTEM aplicado a nombre-tabla significa que cada página de nombre-tabla se incluye en la muestra con una probabilidad de P/100 y se excluye con una probabilidad de 1 - P/100. Todas las filas de cada página que se incluye están cualificadas para la muestra. El muestreo SYSTEM de un nombre-tabla generalmente se ejecuta con más rapidez que el muestreo BERNOULLI, pues se recuperan menos páginas de datos. Sin embargo, el muestreo SYSTEM a menudo puede dar lugar a estimaciones menos precisas para las funciones de agregación, como SUM(SALES), especialmente si las filas de nombre-tabla están agrupadas en clúster en alguna columna a la que se hace referencia en dicha consulta. En determinadas circunstancias, el optimizador podría decidir que es más eficiente realizar un muestreo SYSTEM como si fuera un muestreo BERNOULLI. Un ejemplo de estas circunstancias es la situación en la que un índice puede aplicar un predicado en nombre-tabla y el predicado es mucho más selectivo que la tasa de muestreo P.

expresión-numérica-1

La expresión-numérica-1 especifica el tamaño de la muestra que se debe obtener del nombre-tabla, expresado como porcentaje. Debe ser una expresión numérica constante que no puede contener columnas. La expresión debe evaluarse como un número positivo menor que o igual a 100, pero puede encontrarse entre el 1 y el 0. Por ejemplo, el valor 0,01 representa una centésima parte de un porcentaje, lo que significa que, de promedio, se realizará un muestreo de 1 fila entre 10.000. Una expresión-numérica-1 que se evalúe en 100 se maneja como si no se hubiera especificado la cláusula-tablesample. Si expresión-numérica1 se evalúa en un valor nulo o en un valor mayor que 100 o menor que 0, se devuelve un error (SQLSTATE 2202H).

REPEATABLE (expresión-numérica2)

A veces resulta recomendable que el muestreo se repita desde una ejecución de la consulta hasta la siguiente; por ejemplo, durante una prueba de regresión o depuración de la consulta. Esto se puede conseguir especificando la cláusula REPEATABLE. La cláusula REPEATABLE necesita la especificación de una expresión-numérica2 entre paréntesis, que desempeña el mismo rol que el valor raíz de un generador de números aleatorios. La adición de la cláusula REPEATABLE a la cláusula-tablesample de cualquier nombre-tabla asegura que las ejecuciones repetidas de dicha consulta (utilizando el mismo valor para expresión-numérica2) devuelven el mismo ejemplo, siempre y cuando los datos no se hayan actualizado, reorganizado ni reparticionado. Para garantizar que se utiliza la misma muestra de nombre-tabla entre diversas consultas, se recomienza utilizar una tabla temporal global. Como alternativa, pueden combinarse varias consultas en una única consulta, con varias referencias a una muestra definida mediante la cláusula WITH.

Ejemplos:
  1. Solicitar una muestra Bernoulli del 10% de la tabla Sales por motivos de auditoría.
      SELECT * FROM Sales
        TABLESAMPLE BERNOULLI(10)
  2. Calcular los ingresos totales por ventas de la región Northeast para cada categoría de producto, utilizando una muestra aleatoria SYSTEM del 1% de la tabla Sales. La semántica de SUM corresponde a la propia muestra, de modo que para extrapolar las ventas a la tabla Sales completa, la consulta debe dividir ducha SUM por la tasa de muestreo (0,01).
    SELECT SUM(Sales.Revenue) / (0.01)
      FROM Sales TABLESAMPLE SYSTEM(1)
      WHERE Sales.RegionName = 'Northeast'
      GROUP BY Sales.ProductCategory
  3. Utilizando la cláusula REPEATABLE, modificar la consulta anterior para asegurar que se obtiene el mismo resultado (aleatorio) cada vez que se ejecuta la consulta. El valor de la constante especificada entre paréntesis es arbitrario.
    SELECT SUM(Sales.Revenue) / (0.01)
      FROM Sales TABLESAMPLE SYSTEM(1) REPEATABLE(3578231)
      WHERE Sales.RegionName = 'Northeast'
      GROUP BY Sales.ProductCategory
cláusula-cardinalidad-UDF-tabla
Se puede especificar la cláusula cláusula-cardinalidad-UDF-tabla para cada referencia de función de tabla definida por el usuario dentro de la cláusula FROM. Esta opción indica el número esperado de filas que se deben devolver sólo para la sentencia SELECT que contiene. Las cláusulas CARDINALITY y CARDINALITY MULTIPLIER no se permiten si la función de tabla es una función de tabla SQL en línea (SQLSTATE 42887).
CARDINALITY constante-entera
Especifica una estimación del número esperado de filas devueltas por la referencia a la función definida por el usuario. El rango de valores de constante-entera es de 0 a 9 223 372 036 854 775 807 inclusive.
CARDINALITY MULTIPLIER constante-numérica

El servidor de base de datos utiliza el producto del CARDINALITY MULTIPLIER constante-numérica y del valor de cardinalidad de referencia como el número esperado de filas devueltas por la referencia de función de tabla.

En este caso, constante-numérica puede estar en formato entero, decimal o coma flotante. El valor debe ser igual o mayor que cero. Si se utiliza la notación de número decimal, el número de dígitos puede ser de 31. Un valor entero se trata como un número decimal sin fracción. Si se especifica cero o la cardinalidad calculada es menor que 1, se supone que la cardinalidad de la referencia a la función de tabla definida por el usuario es 1.

El valor de la columna CARDINALITY de SYSSTAT.ROUTINES para el nombre de función de tabla se utiliza como valor de cardinalidad de referencia. Si no se establece ningún valor en la columna CARDINALITY de SYSSTAT.ROUTINES, se toma un valor finito como valor predeterminado para el valor de cardinalidad de referencia. Este valor finito es el mismo valor que se toma para las tablas para las que el programa de utilidad RUNSTATS no ha reunido estadísticas.

Solo una constante numérica puede seguir la palabra clave CARDINALITY o CARDINALITY MULTIPLIER. No se soporta un marcador de parámetro o variable de host. Si se especifica un valor de cardinalidad en una referencia de función de tabla no cambia el valor de columna CARDINALITY para la función en la vista de catálogo SYSSTAT.ROUTINES.

El valor de CARDINALITY para funciones de tabla definidas por el usuario de SQL compiladas y externas se puede cambiar actualizando la columna CARDINALITY en la vista de catálogo SYSSTAT.ROUTINES. El valor de CARDINALITY para una función de tabla externa también se puede inicializar especificando la opción CARDINALITY en la sentencia CREATE FUNCTION (tabla externa) cuando se crea una función de tabla definida por el usuario.

cláusula-correlación-con-tipo
Una cláusula-correlación-con-tipo define el aspecto y el contenido de la tabla generada por una función de tabla genérica. Se debe especificar esta cláusula cuando la referencia-función-tabla es una función de tabla genérica que no se puede especificar para ninguna otra referencia de tabla. Los valores de tipo-datos siguientes se soportan en las funciones de tabla genéricas:
Tabla 4. Tipos de datos soportados en las funciones de tabla genéricas
Tipo de datos de columna SQL Tipo de datos Java™ equivalente
SMALLINT short
INTEGER int
BIGINT long
REAL float
DOUBLE doble
DECIMAL(p,s) java.math.BigDecimal
NUMERIC(p,s) java.math.BigDecimal
CHAR(n) java.lang.String
CHAR(n) FOR BIT DATA COM.ibm.db2.app.Blob
VARCHAR(n) java.lang.String
VARCHAR(n) FOR BIT DATA COM.ibm.db2.app.Blob
GRAPHIC(n) java.lang.String
VARGRAPHIC(n) Serie
BLOB(n) COM.ibm.db2.app.Blob
CLOB(n) COM.ibm.db2.app.Clob
DBCLOB(n) COM.ibm.db2.app.Clob
DATE Serie
TIME Serie
TIMESTAMP Serie
XML AS CLOB(n) COM.ibm.db2.jcc.DB2Xml
manejador-continuo

Determinados errores que se producen en una expresión-tabla-anidada pueden tolerarse y, en lugar de devolver u error, la consulta puede continuar y devolver un resultado. Esto se denomina expresión de tabla anidada con tolerancia a errores.

Si se especifica la cláusula RETURN DATA UNTIL, las filas que se devuelvan de la selección completa antes de que se detecte la condición indicada formarán el conjunto de resultados de la selección completa. Esto significa que un conjunto de resultados parcial (que también puede ser un conjunto de resultados vacío) de la selección completa puede aceptarse como resultado para la expresión-tabla-anidada.

La palabra clave FEDERATED limita la condición para gestionar sólo los errores que se producen en una fuente de datos remota.

La condición puede especificarse como un valor SQLSTATE, con una longitud de constante-serie de 5. Si lo desea, puede especificar un valor SQLCODE para cada valor SQLSTATE especificado. Para las aplicaciones portátiles, especifique valores SQLSTATE siempre que pueda, ya que los valores SQLCODE generalmente no pueden utilizarse en todas las plataformas y no forman parte del estándar SQL.

Sólo pueden tolerarse determinados errores. Los errores que no permiten que se ejecute el resto de la consulta no pueden tolerarse y se de vuelve un error para toda la consulta. El valor-condición-específica puede especificar condiciones que en realidad el gestor de bases de datos no tolera, incluso en caso de especificarse un valor SQLSTATE o SQLCODE, y, en estos casos, se devuelve un error.

Una consulta o una vista que tiene una expresión-tabla-anidada tolerante a errores es de sólo lectura.

La selección completa de una expresión-tabla-anidada tolerante a errores no se optimiza utilizando tablas de consulta materializada.

valor-condición-específica
Si se especifican, es posible que el gestor de bases de datos tolere los valores SQLSTATE y SQLCODE siguientes:
  • SQLSTATE 08001; SQLCODEs -1336, -30080, -30081, -30082
  • SQLSTATE 08004
  • SQLSTATE 42501
  • SQLSTATE 42704; SQLCODE -204
  • SQLSTATE 42720
  • SQLSTATE 28000

Referencias correlacionadas en referencias-tabla

Las referencias correlacionadas se pueden utilizar en expresiones de tabla anidadas o como argumentos para funciones de tabla. La norma básica que se aplica para ambos casos es que la referencia correlacionada debe proceder de una referencia-tabla de un nivel superior en la jerarquía de subconsultas. Esta jerarquía incluye las referencias-tabla que ya se han resuelto en el proceso de izquierda a derecha de la cláusula FROM. Para las expresiones de tablas anidadas, la palabra clave LATERAL debe existir antes que la selección completa. Los siguientes ejemplos contienen sintaxis válida:
  Ejemplo 1:  SELECT t.c1, z.c5
              FROM t, TABLE( tf3(t.c2) ) AS z      -- t precede tf3
              WHERE t.c3 = z.c4;                   -- en FROM, por lo que t.c2
                                                   -- se conoce

  Ejemplo 2:  SELECT t.c1, z.c5
              FROM t, TABLE( tf4(2 * t.c2) ) AS z  -- t precedes tf4
              WHERE t.c3 = z.c4;                   -- en FROM, por lo que t.c2
                                                   -- se conoce

  Ejemplo 3:  SELECT d.deptno, d.deptname,
                     empinfo.avgsal, empinfo.empcount
              FROM department d,
                   LATERAL (SELECT AVG(e.salary) AS avgsal,
                              COUNT(*) AS empcount
                       FROM employee e           -- el departamento precede a la expresión
                       WHERE e.workdept=d.deptno -- de tabla anidada y se
                      ) AS empinfo;              -- especifica LATERAL, 
                                                 -- por lo que se conoce el d.deptno
Pero los ejemplos siguientes no son válidos:
  Ejemplo 4:  SELECT t.c1, z.c5
              FROM TABLE( tf6(t.c2) ) AS z, t  -- no se puede resolver t en t.c2!
              WHERE t.c3 = z.c4;                  -- compárese con el Ejemplo 1.

  Ejemplo 5:  SELECT a.c1, b.c5
              FROM TABLE( tf7a(b.c2) ) AS a, TABLE( tf7b(a.c6) ) AS b
              WHERE a.c3 = b.c4;                   -- no se puede resolver b en
                                                   -- b.c2!

  Ejemplo 6:  SELECT d.deptno, d.deptname,
                     empinfo.avgsal, empinfo.empcount
              FROM department d,
                   (SELECT AVG(e.salary) AS avgsal,
                              COUNT(*) AS empcount
                       FROM employee e           -- el departamento precede a la expresión
                       WHERE e.workdept=d.deptno -- de tabla anidada pero 
                      ) AS empinfo;              -- no se especifica LATERAL,
                                                 -- por lo que se desconoce el d.deptno