Oracle - Tablas temporales oracle

 
Vista:

Tablas temporales oracle

Publicado por Quique (1 intervención) el 14/10/2004 12:28:19
¿ Como se pueden crear tablas temporales en oracle para q se eliminen automaticamente al final de un procedimiento ?

Gracias !
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Tablas temporales oracle

Publicado por rodrigo (102 intervenciones) el 20/10/2004 23:02:28
create global nombre_table (cod numer, glosa varchar2(23))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Tablas temporales oracle

Publicado por jota (4 intervenciones) el 22/10/2004 23:40:04
No es del todo correcto....

Create golabl temporary table table_name(campos tipos)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Tablas temporales oracle

Publicado por Quique (6 intervenciones) el 25/10/2004 14:18:40
Y para meterlo dentro de un procedimiento ???
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Tablas temporales oracle

Publicado por Jorge-DBA (123 intervenciones) el 25/10/2004 15:35:25
Que tal:

Para realizar sentencias DDL dentro de un PL/Sql puedes disponer del SQL Dinámico.

Ejemplo:

SQL> drop table msg;

Tabla borrada.

SQL> declare
2 str varchar2(200);
3 begin
4 str := 'create global temporary table msg (msg varchar2(120))';
5 EXECUTE IMMEDIATE str;
6 end;
7 /

Procedimiento PL/SQL terminado correctamente.

SQL> desc msg
Nombre ¿Nulo? Tipo
----------------------------------------- -------- -----------------------
MSG VARCHAR2(120)

Saludos.

Jorge - DBA
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Tablas temporales oracle

Publicado por Quique (6 intervenciones) el 25/10/2004 15:52:51
Muchas gracias Jorge, pero... necesito algún tipo d permiso para crearlas ???? ... y ... se destruyen al final del procedimiento o cuando se destruyen ????
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Tablas temporales oracle

Publicado por Jorge-DBA (123 intervenciones) el 25/10/2004 16:38:03
Que tal nuevamente:

Cuando tu creas una definición de tabla temporal "GLOBAL TEMPORARY TABLE", los datos estarán temporalmente almacenados durante dos tipos de eventos según la configuración de la tabla:
1)On commit preserve rows
2)On commit delete Rows
La diferencia de ambas es que la primera conservará los resistros durante la sesión abierta hasta que termine, y la segunda si los registros deben ser borrados cuando se termine la transacción y una de ellas es eligidas durante la construcción de la tabla, son excluyentes.

Si existen multiples sesiones de usuarios creando registros en la tablas temporales cada sesión verá sus propios datos.

A diferencia de una tabla tradicional, no se configuran parámetros de almacenaje o Storage, ya que los datos no se almacenan en un tablespace permanente.

Las restricciones que tienes son las siguientes:
1)No puedes particionar este tipo de tablas ya que no almecenan registros
2)No puedes crear integridad con otras tablas
3)No puedes anidar tablas
4)No puedes crear el parallel DML
5)Las transacciones distribuidas no son soportadas.

El privilegio que necesitas es unicamente el de crear tablas "CREATE ANY TABLE" o bien el role de RESOURCE, si deseas eliminar dinámicamente la tabla puedes ocupar el SQLDINAMICO.

Saludos Jorge-DBA
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Tablas temporales oracle

Publicado por Quique (6 intervenciones) el 25/10/2004 16:54:11
Muchas gracias de nuevo por tu explicación.

Solo me han quedado un par de dudas:
¿ A que te refieres con que para eliminar dinámicamente la tabla puedo ocupar el sqldinamico ?¿ eso quiere decir
que la tabla no se elimina por si sola al final de la transacción o de la sesión, sino que solo se vacía al finalizar
la transacción o la sesión ? ¿ Podrías ponerme un ejemplo ?

Mil gracias !
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Tablas temporales oracle

Publicado por Jorge-DBA (123 intervenciones) el 25/10/2004 17:15:45
En cuanto a la destrucción:

Las tablas temporales no se destruyen automáticamente por Oracle, al contrario, su definición continúa existiendo, son removidas a menos que uno lo decida, es la ventaja, como te comentaba, si es que las quieres eliminar despues de un evento, puedes eligir el mismo método que te explicaba de como contruir la tabla con el SQL Dinámico.

La ventaja principal de una tabla temporal, no es que de remueva su definición, si no su información que se almacenó durante algun evento transaccional, esto tiene una gran ventaja, ya que no almacena registros, no genera REDOLOGS, es decir, los datos temporales nunca serán respladados.

si eliges solo remover la tabla, será por que no quieres que en tu diccionario de la aplicación, existan tablas de más, pero si es una tabla que se ocupe para múltiples propósitos, conviene no removerla si no dejarla como parte de tu diccionario, y al final de cuentas seguirá siendo temporal.

Saludos.

Jorge - DBA
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Tablas temporales oracle

Publicado por Jose Ramon Gonzalez Diaz (2 intervenciones) el 15/02/2007 23:12:12
Yo tengo un problema, tenemos un aplicativo que es operado por varios usuarios a la vez, se estan manejando tablas temporales, pero hay tablas temporales que son "publicas" (varios usarios las utilizan al mismo tiempo) y el problema que tenemos es que los usuarios ven la informacion de todos los usuarios que en ese momento estan usando la misma tabla temporal, solucione el problema utilizando vistas materializadas, existe otra forma de evitar este problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar