Bonjour,
Environnement :
====================
Oracle 11g
Problème :
====================
Code : Sélectionner tout - Visualiser dans une fenêtre à part 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 :
Quand j'execute mon script différentiel_data sur l'ensemble des bases tout fonctionne nickel sauf pour une table où je me retrouve avec l'erreur citée ci-dessus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 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 !!!!
pourtant si je fais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 select * from NEW.MATABLE minus select * from OLD.MATABLE SQL Error: ORA-01790: une expression doit être du même type que l'expression qui lui correspond
et rien non plus d'ans l'autre sens
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 select column_name, data_type, data_length, data_precision, data_scale from all_tab_cols where owner='NEW' and table_name='MATABLE' minus select column_name, data_type, data_length, data_precision, data_scale from all_tab_cols where owner='OLD' and table_name='MATABLE' > 0 rows selected
ce qui me fait dire que les tables dans les deux schémas sont bien identiques. D'où mon message car je ne comprends pas pourquoi ce message apparaît !!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 select column_name, data_type, data_length, data_precision, data_scale from all_tab_cols where owner='OLD' and table_name='MATABLE' minus select column_name, data_type, data_length, data_precision, data_scale from all_tab_cols where owner='NEW' and table_name='MATABLE' > 0 rows selected
quelqu'un aurait une piste ?
D'avance merci
Partager