Estou tentando fazer um SELECT INTO usando Oracle. Minha consulta é:
SELECT * INTO new_table FROM old_table;
Mas eu recebo o seguinte erro:
SQL Error: ORA-00905: missing keyword
00905. 00000 - "missing keyword"
Alguma idéia do que está errado?
O comportamento padrão do exposto acima deve ser o que eu pensava originalmente: No entanto, a Oracle o implementou de maneira totalmente diferente em seu próprio dialeto do SQL Oracle Docs on Insert ...
select into
criar uma nova tabela não faz parte do padrão. O padrão SQL para criar uma tabela com base em uma seleção écreate table .. as select ...
. No padrão SQL,SELECT INTO
está definido para ler um valor da coluna em uma variável em uma linguagem de programaçãoRespostas:
Se NEW_TABLE já existir, então ...
Se você deseja criar NEW_TABLE com base nos registros em OLD_TABLE ...
Se o objetivo é criar uma tabela nova, mas vazia, use uma cláusula WHERE com uma condição que nunca pode ser verdadeira:
Lembre-se de que CREATE TABLE ... AS SELECT cria apenas uma tabela com a mesma projeção que a tabela de origem. A nova tabela não possui restrições, gatilhos ou índices que a tabela original possa ter. Esses ainda precisam ser adicionados manualmente (se necessário).
fonte
select into
é usado em pl / sql para definir uma variável para os valores do campo. Em vez disso, usefonte
select into
faz parte de pl / sql. É uma linguagem para escrever procedimentos armazenados e não tem relação direta com o padrão sql. E sim, a Oracle fez muitas coisas que nunca foram parte das = padrão)SELECT INTO
é SQL padrão. O padrão apenas definecreate table .. as select ..
Usar:
Exemplo:
Se a tabela já existir:
fonte