bonjour;

je voudrais mettre en place du code pl/SQL pour réaliser des inserts lorsque je ne trouve pas l'occurence recherchée et donc le cas échéant controler si l'occurence est toujours valide par rapport aux données en paramètres

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
 
    BEGIN
      SELECT * INTO v_acquereur FROM ACQUEREUR
      WHERE ACQUEREUR.ORGANISME_ACQUEREUR_ENVOYE_CAP = saa_evt_obj.ORGANISME_ACQUEREUR_ENVOYE_CAP;
 
      IF v_acquereur.BANQUE_REFERENCE != saa_evt_obj.BANQUE_REFERENCE OR  v_acquereur.CODE_PAYS_ACQUEREUR != saa_evt_obj.CODE_PAYS_ACQUEREUR THEN
        UPDATE ACQUEREUR
        SET ACQUEREUR.BANQUE_REFERENCE =  saa_evt_obj.BANQUE_REFERENCE,
      ACQUEREUR.CODE_PAYS_ACQUEREUR = saa_evt_obj.CODE_PAYS_ACQUEREUR;
      END IF;
 
      EXCEPTION
      WHEN NO_DATA_FOUND THEN
        INSERT INTO ACQUEREUR
        (ORGANISME_ACQUEREUR_ENVOYE_CAP, BANQUE_REFERENCE, CODE_PAYS_ACQUEREUR)
      VALUES (saa_evt_obj.ORGANISME_ACQUEREUR_ENVOYE_CAP, saa_evt_obj.BANQUE_REFERENCE, saa_evt_obj.CODE_PAYS_ACQUEREUR);
    END ;
je me demande si c'est bon, normalement le select leve une exception si l'instruction ne renvoie rien donc je ne fais pas l'update.
y a a t-il une méthode plus optimisé ? un code plus clair ?