Oracle - Tabla en Memoria

 
Vista:

Tabla en Memoria

Publicado por Fabiola (3 intervenciones) el 21/01/2008 17:41:59
hola a todos

Estoy metida en un problema y es que necesito crear una tabla temporal en memoria y despues insertarle datos que vienen de otra base de datos.

Esta tabla despues voy a barrerla y hacerle algunas validaciones.

He estado revisando algunos ejemplos pero son muy sencillos, para crear mi tabla lo hago asi:
TYPE PEOPLE IS TABLE OF TB_PEOPLE%TYPE;

Pero no se si este bien lo de %TYPE. Quiero una variable similar a la tabla TB_PEOPLE.

Y despues no se como llenar la tabla.

Alguien puede ayudarme???

Gracias por vuestra ayuda
un saludo
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:Tabla en Memoria

Publicado por Jairo Londoño (1 intervención) el 22/04/2008 15:25:39
Por lo que veo lo que quieres crear es una coleccion. Busca en internet hacerca de como crear colecciones y tu duda sera resuelta.
Por que para crear una tabla temporal se usa la sentencia create global temprary table.
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:Tabla en Memoria

Publicado por Fernando Pardo (1 intervención) el 22/02/2010 19:57:18
Hola... Es sencillo lo que tu quieres hacer::::

Vamos a suponer que deseas crear una tabla en memoria llamada lt_nombres de un solo campo y que el tipo de dato de ese campo sea igual al campo nombre_completo de la tabla nombres.....

DECLARE
---Creas la estructura de la tabla en memoria
TYPE t_nombres IS TABLE OF cl_personas.nombre_completo%TYPE
INDEX BY BINARY_INTEGER;

---Creas la tabla en memoria con la estructura especificada, El campo lbi_index se debe crear para poder referenciar cualquier posición de la taba en memoria.

lt_nombres t_nombres;
lbi_index BINARY_INTEGER;

BEGIN
--- Insertas datos en la tabla en las posiciones especificadas
lt_nombres(20):='Cardenas';
lt_nombres(48):='Lucas';
lt_nombres(69):='Vega';
lt_nombres(29):='Vera';

--- Visualizas la primera posición de la tabla
lbi_index := lt_nombres.FIRST;
dbms_output.put_line(lt_nombres.FIRST);

--- Verificas que exista la posición 48
IF(lt_nombres.EXISTS(48)) THEN
dbms_output.put_line('Si existe');
ELSE
dbms_output.put_line('NO Existe');
END IF;
END;

Espero que te sirva para que tengas una idea...

Suerte

Fernando
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:Tabla en Memoria

Publicado por mamen (1 intervención) el 27/09/2010 09:54:31
PASOS:

1.- crea un type
CREATE OR REPLACE TYPE "INFFAMILY" AS OBJECT
(
CODFAM VARCHAR2(2)
);
/

2.- crea una tabla para el type

CREATE OR REPLACE TYPE TB_INFFAMILY AS TABLE OF INFFAMILY;

3.- carga la tabla

PROCEDURE loadFamilias (fam varchar2,ind number)IS

BEGIN
v_TB_INFFAMILY.EXTEND;
v_TB_INFFAMILY(ind):= INFFAMILY(fam);
END;

4.- lee la tabla

SELECT CODFAM FROM TABLE(CAST(tbart AS TB_INFFAMILY)) a
WHERE A.CODFAM ='01';
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