Maison >base de données >tutoriel mysql >Pourquoi 'SELECT * INTO new_table FROM old_table;' Échec dans Oracle et comment puis-je créer correctement une nouvelle table ?

Pourquoi 'SELECT * INTO new_table FROM old_table;' Échec dans Oracle et comment puis-je créer correctement une nouvelle table ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-05 10:04:44535parcourir

Why Does

ELECT INTO Méfait inattendu dans Oracle

Dans le domaine de SQL, l'instruction SELECT INTO occupe une position de premier plan, permettant une extraction de données sans effort et insertion dans une nouvelle destination. Cependant, dans le contexte du dialecte unique d'Oracle, cette opération dévoile une tournure surprenante.

Contrairement aux attentes conventionnelles, la requête "SELECT * INTO new_table FROM old_table;" déclenche une erreur imprévue : "Erreur SQL : ORA-00905 : mot-clé manquant." Cette anomalie découle de l'interprétation distincte par Oracle de la clause INTO.

Dévoilement de l'implémentation d'Oracle

Oracle s'écarte du comportement standard SELECT INTO, optant pour une approche alternative. Si la table cible existe déjà, Oracle exécute une opération INSERT INTO implicite, en respectant la syntaxe suivante :

insert into new_table
select * from old_table
/

Alternativement, pour créer une toute nouvelle table basée sur des enregistrements existants, Oracle utilise la syntaxe suivante :

create table new_table as
select * from old_table
/

Curieusement, Oracle propose également une solution pour créer un vide table :

create table new_table as
select * from old_table
where 1 = 2
/

En ajoutant une clause WHERE avec une condition intrinsèquement fausse, Oracle construit ingénieusement une table vide sans copier les données de la source.

L'approche distinctive d'Oracle en matière de SELECT INTO présente un changement de la norme établie, obligeant les développeurs à s'adapter à sa syntaxe et à sa sémantique uniques. Cependant, malgré la surprise initiale, cet écart offre flexibilité et contrôle sur la manipulation des données au sein du vaste écosystème de bases de données d'Oracle.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn