|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Invité régulier
![]() Inscription : mars 2005 Messages : 23 ![]() |
Bonjour,
Environnement : ==================== Oracle 11g Problème : ==================== Code :
ORA-01790: une expression doit être du même type que l'expression qui lui correspond
Contexte : ==================== Je suis en train de mettre en place un différentiel de bases (en fait la même base à moment M et un moment M+1). j'ai donc - une base OLD que j'importe dans le schéma OLD - une base NEW que j'importe dans le schéma NEW - un schéma DIF pour le différentiel Pour le moment j'ai réussi à automatiser le différentiel de structure entre les bases OLD et NEW ainsi que l'adaptation structurelle de OLD pour qu'elle corresponde à NEW. cette adaptation structurelle (nécessaire car la base peut évoluer entre M et M+1 sans que je le sache) me permet alors de pouvoir faire un différentiel de données de chaque table via un MINUS comme ceci : Code :
INSERT INTO DIF.MATABLE SELECT * FROM NEW.MATABLE minus SELECT * FROM OLD.MATABLE Au départ je me suis dit que dans mon script différentiel_structure j'avais peut être oublié un cas de figure (du genre je prend en compte l'ajout de colonne sur une table entre M et M+1 mais pas la suppression). Mais non ... Et puis surtout j'ai bien comparé les tables OLD.MATABLE et NEW.MATABLE et je ne trouve pas de différence !!!! ![]() Code :
Code :
Code :
quelqu'un aurait une piste ? D'avance merci |
||||||
|
|
00
|
|
|
#2 |
![]() ![]() |
Nommez toutes vos colonnes au lieu de faire des select *.
Vous vous rendrez probablement compte que dans cette table vous avez interverti deux colonnes : (A,B) et dans l'autre (B,A). D'ailleurs, rajoutez le column_id dans vos requêtes sur les vues systèmes pour le vérifier.
__________________
Email : http://scr.im/waldar |
|
00
|
|
|
#3 | |
|
Invité régulier
![]() Inscription : mars 2005 Messages : 23 ![]() |
Citation:
![]() merci, une fois lu ça tombe sous le sens. l'ordre des colonnes doit être le même si l'on ne les précise pas en faisant un INSERT INTO table_dest select * from table_src j'ai donc ajouté un order by column_id dans ma requête listant les colonnes sur lesquelles il y a un différentiel afin de faire les modifications structurelles dans le bon ordre. |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com