Maison >base de données >tutoriel mysql >Comment utiliser correctement INSERT SELECT dans Oracle 11g pour éviter ORA-00936 ?

Comment utiliser correctement INSERT SELECT dans Oracle 11g pour éviter ORA-00936 ?

DDD
DDDoriginal
2024-12-23 20:12:10957parcourir

How to Correctly Use INSERT SELECT in Oracle 11g to Avoid ORA-00936?

Insertion de données via une requête SELECT dans Oracle 11G

Dans Oracle 11G, l'instruction INSERT SELECT permet un transfert efficace de données d'une table à une autre à l'aide d'une sous-requête. Cependant, les utilisateurs peuvent rencontrer des erreurs inattendues si leur syntaxe n'est pas correcte.

Requête utilisateur :

Un utilisateur a tenté d'insérer les résultats d'une sous-requête dans une nouvelle table en utilisant la déclaration suivante :

insert into table1 (col1, col2) values (select t1.col1, t2.col2 from oldtable1 t1, oldtable2 t2);

Cependant, l'utilisateur a rencontré le problème suivant erreur :

SQL Error: ORA-00936: missing expression

Solution :

La syntaxe fournie est incorrecte. L'instruction INSERT SELECT dans Oracle ne nécessite pas le mot clé VALUES, qui est couramment utilisé dans d'autres dialectes SQL. La syntaxe correcte doit être :

insert into table1 (col1, col2)
select t1.col1, t2.col2
from oldtable1 t1, oldtable2 t2

En d'autres termes, supprimez simplement le mot-clé VALUES du début de l'instruction. Cela permettra à Oracle d'exécuter correctement la requête INSERT SELECT, en insérant les résultats de la sous-requête dans la table1.

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