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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
insert into DIF.MATABLE select * from NEW.MATABLE minus select * from OLD.MATABLE
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.

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 : 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
pourtant si je fais
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
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='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
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 !!!

quelqu'un aurait une piste ?
D'avance merci