Para crear una tabla temporal basada en datos de la base de datos, configure el administrador de tablas temporales para el objeto Query, luego ejecute una consulta a la base de datos utilizando la palabra clave INTO seguida del nombre de la tabla temporal.
La palabra clave INTO se coloca después de la lista de selección de la consulta. Por ejemplo:
SELECT
Code,
Description
INTO TemporaryTable
FROM Catalog.Products
El resultado de la consulta contendrá filas con las columnas Code y Description que incluirán los registros almacenados en la tabla creada.
Si el administrador de tablas temporales no está configurado o está cerrado, o si el administrador de tablas temporales ya tiene la tabla con el nombre especificado y la consulta no es basada en lotes, se generará un error.
Para crear una tabla temporal basada en una fuente externa, incluya el nombre del parámetro que almacenará la fuente externa en la lista de fuentes de la consulta. El resto de la sintaxis es idéntica a la creación regular de una tabla temporal.
Las siguientes entidades pueden ser fuentes externas:
- tabla de valores
- sección tabular
- resultado de la consulta
A continuación se muestra un ejemplo de creación de una tabla temporal basada en una fuente externa:
SELECT
Code,
Description
INTO TemporaryTable
FROM &ExternalSource AS ExternalSource
En este ejemplo, el contenido de las columnas Code y Description se almacena en la TemporaryTable desde una fuente externa, como una tabla de valores pasada como parámetro ExternalSource.
Si la tabla temporal se crea en base a una fuente externa, no se permite utilizar uniones y joins en la consulta. Tampoco se pueden utilizar campos que sean atributos de campos de tabla si se utilizan estas tablas para crear la tabla temporal.
Si se utiliza una tabla de valores como fuente, se deben especificar explícitamente los tipos de valor de las columnas.
Nota. No se pueden utilizar las cláusulas AUTOORDER, TOTALS, FOR UPDATE, HAVING y GROUP BY en una consulta que forme una tabla temporal basada en una tabla de valores.
Si desea crear una tabla temporal y bloquear los datos en las tablas subyacentes, utilice la cláusula FOR UPDATE, como en el ejemplo.
SELECT
ExpInvoice.Ref,
ExpInvoice.Number,
ExpInvoice.Date
INTO TemporaryTable
FROM
Document.ExpInvoice AS ExpInvoice
WHERE
ExpInvoice.Ref IN(&Documents)
FOR UPDATE