referencia-tabla
Una referencia-tabla especifica una tabla resultante intermedia.
- 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 FROMque 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
- 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:
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 SYSTEM_TIME AS OF CTSTnombre-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
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
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.
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;'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:
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.CREATE TABLE ETLIN.SOURCE_TABLE ( MODELNAME VARCHAR(128) NOT NULL PRIMARY KEY, MODELDS2 BLOB(4M) NOT NULL, MODELFORMATS BLOB(4M), MODELMETADATA BLOB(4M) );- 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.c1Ejemplo 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.
- [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.
- NO
- Los datos de archivo de datos de origen no están comprimidos. Es el valor por omisión.
- 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.
- 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.
- FALSE o OFF
- No está permitido un valor ASCII 1 - 31 en un campo CHAR o VARCHAR. Es el valor por omisión.
- 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 esuser1, 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/xyzy el ID de autorización del definidor de tabla esuser1, 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.
- 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.
- 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
- 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)
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.
- 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.
- 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 59oDELIMITER '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.
- Como un solo carácter (por ejemplo
- 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.
- 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.
- 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.
<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).
- 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.
- NOLOG
- Especifica si se crea el archivo .log para la tabla externa.
- 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:
donde:SWIFT (punto final, claveaut1, claveaut2, grupo)- 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:donde:
S3 (punto finalendpoint, claveaut1, claveaut2, grupo)- 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.
- 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.
- 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.
- 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:- Solicitar una muestra Bernoulli del 10% de la tabla Sales por motivos de auditoría.
SELECT * FROM Sales TABLESAMPLE BERNOULLI(10) - 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 - 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
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 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