Bonjour,

Voilà mon MERGE :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
MERGE INTO GRHUM.TYPE_POPULATION act
USING 
(
  SELECT C_TYPE_POPULATION, LC_TYPE_POPULATION, LL_TYPE_POPULATION, REF_REGLEMENTAIRE, TEM_FONCTIONNAIRE, TEM_ATOS, TEM_ITARF, TEM_ENS_SUP, TEM_ENSEIGNANT, TEM_2DEGRE, TEM_HOSPITALIER, 
    TEM_BIBLIO, TEM_CARRIERE, D_CREATION, D_MODIFICATION, TEM_1DEGRE, TEM_VISIBLE, D_OUVERTURE, D_FERMETURE
  FROM PLEMENAGER.TYPE_POPULATION
) rf
ON (act.C_TYPE_POPULATION = rf.C_TYPE_POPULATION)
WHEN MATCHED THEN
  UPDATE
  SET act.LC_TYPE_POPULATION = rf.LC_TYPE_POPULATION,
    act.LL_TYPE_POPULATION = rf.LL_TYPE_POPULATION,
    act.REF_REGLEMENTAIRE = rf.REF_REGLEMENTAIRE,
    act.TEM_FONCTIONNAIRE = rf.TEM_FONCTIONNAIRE,
    act.TEM_ATOS = rf.TEM_ATOS,
    act.TEM_ITARF = rf.TEM_ITARF,
    act.TEM_ENS_SUP = rf.TEM_ENS_SUP,
    act.TEM_ENSEIGNANT = rf.TEM_ENSEIGNANT,
    act.TEM_2DEGRE = rf.TEM_2DEGRE,
    act.TEM_HOSPITALIER = rf.TEM_HOSPITALIER,
    act.TEM_BIBLIO = rf.TEM_BIBLIO,
    act.TEM_CARRIERE = rf.TEM_CARRIERE,
    act.D_CREATION = rf.D_CREATION,
    act.D_MODIFICATION = rf.D_MODIFICATION,
    act.TEM_1DEGRE = rf.TEM_1DEGRE,
    act.TEM_VISIBLE = rf.TEM_VISIBLE,
    act.D_OUVERTURE = rf.D_OUVERTURE,
    act.D_FERMETURE = rf.D_FERMETURE
WHEN NOT MATCHED THEN
  INSERT (C_TYPE_POPULATION, LC_TYPE_POPULATION, LL_TYPE_POPULATION, REF_REGLEMENTAIRE, TEM_FONCTIONNAIRE, TEM_ATOS, TEM_ITARF, TEM_ENS_SUP, TEM_ENSEIGNANT, TEM_2DEGRE, TEM_HOSPITALIER, 
    TEM_BIBLIO, TEM_CARRIERE, D_CREATION, D_MODIFICATION, TEM_1DEGRE, TEM_VISIBLE, D_OUVERTURE, D_FERMETURE)
  VALUES (rf.C_TYPE_POPULATION, rf.LC_TYPE_POPULATION, rf.LL_TYPE_POPULATION, rf.REF_REGLEMENTAIRE, rf.TEM_FONCTIONNAIRE, rf.TEM_ATOS, rf.TEM_ITARF, rf.TEM_ENS_SUP, rf.TEM_ENSEIGNANT, rf.TEM_2DEGRE, rf.TEM_HOSPITALIER, 
    rf.TEM_BIBLIO, rf.TEM_CARRIERE, rf.D_CREATION, rf.D_MODIFICATION, rf.TEM_1DEGRE, rf.TEM_VISIBLE, rf.D_OUVERTURE, rf.D_FERMETURE);
SQL Developer m'affiche, à chaque fois, quelques secondes après avoir lancé la requête, une boîte d'erreur titrée "Reconnexion" :
La base de données a été réinitialisée. L'ensemble des états de session ou transactions en attente est perdu.
La sortie de script me dit ceci :
Erreur à la ligne de commande: 1 Colonne: 1
Rapport d'erreur -
Erreur SQL : ORA-00600: code d'erreur interne, arguments : [13013], [5001], [55222], [25173079], [59], [25173079], [17], [], [], [], [], []
00600. 00000 - "internal error code, arguments: [%s], [%s], [%s], [%s], [%s], [%s], [%s], [%s], [%s], [%s], [%s], [%s]"
*Cause: This is the generic internal error number for Oracle program
exceptions. It indicates that a process has encountered a low-level,
unexpected condition. The first argument is the internal message
number. This argument and the database version number are critical in
identifying the root cause and the potential impact to your system.
Qu'est-ce qui se passe ?

Je précise que les deux tables font seulement 31 lignes. En principe, un UPDATE suffirait mais je fais ça aussi à titre d'exercice et j'aurai ensuite des tables plus complexes à fusionner.