Tablas temporales

Trabajo con PL/SQL y tengo un problema con las tablas temporales.
El código es este:
CREATE GLOBAL TEMPORARY TABLE csi_piezas_modelos_temp
(
Idmaterial varchar2(9),
Cantidad number,
SATICIDAD float,
STOCK NUMBER,
Idmodelo varchar2(9),
DESCRIPCIÓN VARCHAR(30)
) ON COMMIT PRESERVE ROWS;
El problema que tengo es que el código compilandolo por si solo no me da ningún error, incluso veo que crea la tabla temporal al ejecutarlo, pero cuando lo utilizo en un procedimiento (en SQL Navigator 4.4) me da un error de compilación y me dice que no esperaba el create. Lo he intentado todo y no soy capaz de solucionar este problema. ¿Alguien tiene alguna idea de porque sucede esto? ¿O en que intentar del cuerpo del código (antes o después de qué) debe ir el create?

1 Respuesta

Respuesta
1
El problema es que no puedes realizar operaciones CREATE o DROP directamente dentro de un PL/SQL.
Para hacerlas tienes que usar la instrucción EXECUTE IMMEDIATE:
EXECUTE IMMEDIATE 'CREATE GLOBAL TEMPORARY TABLE mitabla (id varchar2(9));';
Tal como ves la instrucción que quieras ejecutar debe estar entrecomillada, o estar introducida en una variable de tipo VARCHAR2
Muchísimas gracias. No te puedes imaginar la de vueltas que le he dado sin haberme dado cuenta de eso. La verdad es que había perdido las esperanzas de poder hacer la aplicación utilizando esa sentencia.
Gracias otra vez.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas