Bonjour,
J'aimerais pouvoir supprimer la ligne rec (le premier résultat de la boucle)
J'aimerais faire un delete de rec si rec a des champs egaux avec rec2.
Voir le code ci dessous :
Comme vous le voyez j'aimerais supprimer rec si une condition est remplie. Je ne sais pas comment faire cela en SQL. COmment faire ceci en SQL ou PL :
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 FOR rec IN ( select r.ID_DEMANDE,r.TYPE_EXAMEN, r.DATE_PRESCRIPTION from radiologie r where r.ID_EXAMEN LIKE '%*' ) LOOP FOR rec2 IN ( select r.ID_DEMANDE,r.TYPE_EXAMEN, r.DATE_PRESCRIPTION from radiologie r ) LOOP IF(rec2.ID_DEMANDE = rec.ID_DEMANDE,SUBSTR(rec.ID_EXAMEN,1,2) and r3.TYPE_EXAMEN = rec.TYPE_EXAMEN and r3.ID_EXAMEN LIKE '%*' and TO_CHAR (r3.DATE_PRESCRIPTION, 'DD/MM/YYYY HH24:mi:ss')= TO_CHAR (rec.DATE_PRESCRIPTION, 'DD/MM/YYYY HH24:mi:ss');) DELETE rec END LOOP; END LOOP;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 IF(rec2.ID_DEMANDE = rec.ID_DEMANDE,SUBSTR(rec.ID_EXAMEN,1,2) AND r3.TYPE_EXAMEN = rec.TYPE_EXAMEN AND r3.ID_EXAMEN LIKE '%*' AND TO_CHAR (r3.DATE_PRESCRIPTION, 'DD/MM/YYYY HH24:mi:ss')= TO_CHAR (rec.DATE_PRESCRIPTION, 'DD/MM/YYYY HH24:mi:ss');) DELETE rec
Voici l'algorithme que je tente de reproduire :
Pour chaque ligne de la table RADIOLOGIE dont ID_EXAMEN se termine par une étoile
si pour le triplet T1 = [ ID_DEMANDE concaténé avec les 2 premiers caractères de ID_EXAMEN ; TYPE_EXAMEN ; DATE_PRESCRIPTION ]
il existe une ligne de la table RADIOLOGIE dont le triplet T2 = [ ID_DEMANDE ; TYPE_EXAMEN ; DATE_PRESCRIPTION] est égal à T1
alors supprimer la ligne (correspondant à T1, T2 étant une version plus récente du doublon)
Merci
Partager