que quieren crear tabla temporal en el procedimiento almacenado y acceder a él de la misma pero ha obtenido un error que ORA-00942:Table or view does not exists.
siguiente es el procedimiento que he intentado,¿Cómo crear y usar tablas temporales en el procedimiento almacenado de Oracle?
Create procedure myproc
IS
stmt varchar2(1000);
BEGIN
stmt:='CREATE GLOBAL TEMPORARY table temp(list if columns) ON COMMIT DELETE ROWS';
execute immediate stmt;
insert into temp values('list of column values');
END;
Ésta es la forma en que utiliza para crear tabla temporal, pero Tengo un error, ¿hay alguna otra manera de realizar esta tarea?
La respuesta de @ tbone muestra lo que debe hacer, pero para explicar lo que está viendo: No puede hacer esto porque en el momento en que se compila el procedimiento 'temp' aún no existe. El compilador no intenta analizar el SQL dinámico, sobre todo porque no tiene idea de si funcionará en tiempo de ejecución. La única forma en que funcionaría este enfoque es si el inserto se convirtió también en SQL dinámico; pero así no es como funcionan las tablas temporales en Oracle, así que no lo hagas así. –
@Alex Poole: Gracias –
posible duplicado de [Tabla temporal local en Oracle 10 (para el alcance del procedimiento almacenado)] (http://stackoverflow.com/questions/1192265/local-temporary-table-in-oracle-10 -for-the-scope-of-stored-procedure) – APC