J'essaye de faire un SELECT INTO en utilisant Oracle. Ma requête est:
SELECT * INTO new_table FROM old_table;
Mais j'obtiens l'erreur suivante:
SQL Error: ORA-00905: missing keyword
00905. 00000 - "missing keyword"
Des idées ce qui ne va pas?
Le comportement standard de ce qui précède devrait être comme je le pensais à l'origine: Cependant, Oracle l'a implémenté totalement différemment dans son propre dialecte de SQL Oracle Docs lors de l'insertion ... Sélectionnez
select into
créer une nouvelle table ne fait pas partie de la norme. La norme SQL pour créer une table basée sur une sélection estcreate table .. as select ...
. Dans la norme SQL, ilSELECT INTO
est défini de lire une valeur de colonne dans une variable dans un langage de programmationRéponses:
Si NEW_TABLE existe déjà, alors ...
Si vous souhaitez créer NEW_TABLE en fonction des enregistrements dans OLD_TABLE ...
Si le but est de créer une table nouvelle mais vide, utilisez une clause WHERE avec une condition qui ne peut jamais être vraie:
N'oubliez pas que CREATE TABLE ... AS SELECT crée uniquement une table avec la même projection que la table source. La nouvelle table n'a pas de contraintes, déclencheurs ou index que la table d'origine pourrait avoir. Ceux-ci doivent encore être ajoutés manuellement (s'ils sont requis).
la source
select into
est utilisé dans pl / sql pour définir une variable sur des valeurs de champ. Au lieu de cela, utilisezla source
select into
fait partie de pl / sql. C'est un langage pour écrire des procédures stockées et n'a aucune relation directe avec le standard SQL. Et oui, Oracle a fait beaucoup de choses qui n'ont jamais fait partie de la norme =)SELECT INTO
n'est pas du SQL standard. La norme définit uniquementcreate table .. as select ..
Utilisation:
Exemple:
Si la table existe déjà:
la source