Estoy tratando de hacer un SELECT INTO usando Oracle. Mi consulta es:
SELECT * INTO new_table FROM old_table;
Pero me sale el siguiente error:
SQL Error: ORA-00905: missing keyword
00905. 00000 - "missing keyword"
Alguna idea de lo que está mal?
El comportamiento estándar de lo anterior debería ser como pensaba originalmente: sin embargo, Oracle lo implementó de manera totalmente diferente en su propio dialecto de SQL Oracle Docs en Insertar ... Seleccione
select into
crear una nueva tabla no es parte del estándar. El estándar SQL para crear una tabla basada en una selección escreate table .. as select ...
. En el estándar SQLSELECT INTO
se define para leer un valor de columna en una variable en un lenguaje de programaciónRespuestas:
Si NEW_TABLE ya existe, entonces ...
Si desea crear NEW_TABLE en función de los registros en OLD_TABLE ...
Si el propósito es crear una tabla nueva pero vacía, utilice una cláusula WHERE con una condición que nunca puede ser cierta:
Recuerde que CREATE TABLE ... AS SELECT crea solo una tabla con la misma proyección que la tabla fuente. La nueva tabla no tiene restricciones, desencadenantes o índices que pueda tener la tabla original. Esos aún deben agregarse manualmente (si son necesarios).
fuente
select into
se usa en pl / sql para establecer una variable en valores de campo. En cambio, usefuente
select into
es parte de pl / sql. Es un lenguaje para escribir procedimientos almacenados y no tiene relación directa con el estándar SQL. Y sí, Oracle hizo muchas cosas que nunca fueron parte del estándar =)SELECT INTO
es SQL estándar. El estándar solo definecreate table .. as select ..
Utilizar:
Ejemplo:
Si la tabla ya existe:
fuente