Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   DB2 (https://www.clubdelphi.com/foros/forumdisplay.php?f=33)
-   -   Tablas temporales en funciones (https://www.clubdelphi.com/foros/showthread.php?t=93966)

fjcg02 28-05-2019 10:32:15

Tablas temporales en funciones
 
Buenos días,

hacía mucho que no pasaba por aquí, pero a final acabo preguntando porque siempre hay alguien que ha tenido el mismo problema o me pone en el camino correcto.
Ahora estoy haciendo marcianadas en DB2, y tengo un problema que no sé cómo resolver, ahí lo lanzo.

Estoy haciendo una función que tiene que leer una tabla, recorrérsela, y en base a unas condiciones devolver una serie de valores.

En SQL Server o Firebird, se puede crear una tabla temporal en la función , hacer inserciones sobre ella y luego devolver una select de la tabla temporal. Al acabar la función, la tabla desaparece, que es lo que quiero.

Esto no lo consigo hacer en DB2. He visto que se pueden crear tablas temporales globales, de sesión, etc, pero no consigo hacerlo.

Por lo tanto...

Hay alguien que sepa cómo puedo hacer una función en la que cree una tabla temporal, mi función la vaya rellenado vía inserts y luego pueda devolver los valores?

Quedaría muy agradecido si alguien me puede echar una mano.

Muchas gracias y un saludo

orodriguezca 28-05-2019 23:02:45

la forma de crear una tabla temporal en db2 es:
Código SQL [-]
declare global temporary table "el_nombre_de_la_tabla_temporal" (
  definicion de columna, igual que una tabla
)

Por ejemplo:
Código SQL [-]
declare global temporary table miTabla(
   tbl_id integer,
   tbl_descripcion char(50)
)


Esta tabla existirá mientras se mantenga activa la conexión que la crea y solo es visible para esa conexión.

fjcg02 31-05-2019 09:27:54

Ya ha encontrado la respuesta.

Tienes razón en cómo se declaran y usan las tablas, y de hecho, yo así lo hacía, pero me daba error.

Previamente a poder crear tablas, hay que crear un tablespace de tablas temporales, por eso no me funcionaba.

CREATE TEMPORARY TABLESPACE ( que es el tablespace que van a utilizar vuestras tablas temporales)

Muchas gracias y un saludo


La franja horaria es GMT +2. Ahora son las 06:45:06.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi