Bonjour à tous,
J'ai un soucis sur une requête de mise à jour dynamique, et j'aurais besoin d'aide:
J'ai 2 tables + 1 cache :
Voici mon besoin :
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 ANOMALIE_DECLARATION ( ID_OBJET_DE NUMBER(10) NOT NULL, ID_ETAT_DE NUMBER(10) NOT NULL, ENTITE_AFFECTATION VARCHAR2(8 BYTE), .... ) DECLARATION ( ID_OBJET_DE NUMBER(10) NOT NULL, CONTRAT_EMPLOYEUR VARCHAR2(8 BYTE), CONTRAT_EMPLOYEUR_CORRIGE VARCHAR2(8 BYTE), ....) CACHE_CONTRAT ( PORTEFEUILLE_EMPLOYEUR VARCHAR2(8 BYTE), ... )
Pour chaque ANOMALIE_DECLARATION dont ENTITE_AFFECTATION = NULL.
Récupérer CONTRAT_EMPLOYEUR_CORRIGE si non NULL ou sinon CONTRAT_EMPLOYEUR
Rechercher dans CACHE_CONTRAT pour ce contrat employeur la valeur du « PORTEFEUILLE_EMPLOYEUR ».
Réaliser la mise à jour suivante dans ANOMALIE_DECLARATION :
ENTITE_AFFECTATION = valeur de CACHE_CONTRAT.PORTEFEUILLE_EMPLOYEUR
Voici ma requête :
Je recupère l'erreur : ORA-01427: sous-interrogation ramenant un enregistrement de plus d'une ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 UPDATE ANOMALIE_DECLARATION an SET (an.ENTITE_AFFECTATION) = (SELECT DISTINCT ci.PORTEFEUILLE_EMPLOYEUR from CACHE_CONTRAT cc where cc.PORTEFEUILLE_EMPLOYEUR = (select coalesce (de.CONTRAT_EMPLOYEUR_CORRIGE, de.CONTRAT_EMPLOYEUR ) from DECLARATION de, ANOMALIE_DECLARATION an where de.ID_OBJET_DE =an.ID_OBJET_DE and an.ENTITE_AFFECTATION IS NULL)) where EXISTS (SELECT DISTINCT cc.PORTEFEUILLE_EMPLOYEUR from CACHE_CONTRAT cc where cc.PORTEFEUILLE_EMPLOYEUR = (select coalesce (de.CONTRAT_EMPLOYEUR_CORRIGE, de.CONTRAT_EMPLOYEUR ) from DECLARATION de, ANOMALIE_DECLARATION an where de.ID_OBJET_DE =an.ID_OBJET_DE and an.ENTITE_AFFECTATION IS NULL))
Quelqu'un saurait-il d'où vient le problème?
Merci.
Partager