ORA-01403: Aucune donnée trouvée
Bonjour à tous, je dois mettre à jour le code interne d'une personne, ce code renvoie à un service travaillé.
Par exemple une personne X a comme code interne 1199
1199 renvoie au service Secrétariat par exemple.
Dans mon Pl/Sql j'utilise cette requête pour identifier toutes les personnes que je dois mettre à jour :
Code:
1 2 3 4 5 6 7 8
| SELECT civ.codcol, civ.entorg, p_ctc.ctcexcde, p_ctc.dpmtincde, r_dpmt.dpmtexcde, r_dpmt.dpmtincde
FROM p_ctc, p_cpyaddr, jpb_pers civ, r_dpmt
WHERE p_ctc.cpyaddrincde = p_cpyaddr.cpyaddrincde
AND p_cpyaddr.cpyincde = '1000'
AND civ.CODCOL = SUBSTR(p_ctc.CtcExCde,1,5)
AND To_Char(civ.CODAGT) = SUBSTR(p_ctc.CtcExCde,7,5)
AND p_ctc.CtcExCde NOT LIKE '99999%'
AND p_ctc.dpmtincde = r_dpmt.dpmtincde; |
Cette requête me renvoie bien plus de 5000 enregistrements dont voici une poignée :
Code:
1 2 3 4 5 6 7 8 9 10
| CODCOL ENTORG CTCEXCDE DPMTINCDE DPMTEXCDE DPMTINCDE
59350 02070205 59350-27811 1619 097 1619
59350 02080015 59350-27818 1167 01060102 1167
59350 02080103 59350-27782 1007 0104030206 1007
59350 02070501 59350-27747 1069 0105000210 1069
59350 02061100 59350-27796 987 0104020203 987
59350 02080303 59350-27799 1020 010404 1020
59350 02070000 59350-27750 1460 0700 1460
59350 02070404 59350-27756 1187 010700030104 1187
59350 02050105 59350-9 940 0104000106 940 |
Ici on se rend bien compte que la colone dpmtincde (code du service) n'est pas à jour car la colonne DPMTEXCDE doit ressembler à la colonne ENTORG à peu de chose car la colonne DPMTEXCDE mixe CODCOL + ENTORG ce qui doit donner pour la première ligne par exemple :
Code:
1 2
| CODCOL ENTORG CTCEXCDE DPMTINCDE DPMTEXCDE DPMTINCDE
59350 02070205 59350-27811 2746 350-02070205 2746 |
Voici mon Pl/Sql au complet :
Code:
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
| DECLARE
/* pour mémoriser occurrence lue */
lu_codcol VARCHAR2(5);
lu_entorg VARCHAR2(18);
lu_ctcexcde VARCHAR2(17);
lu_ctcdpmtincde NUMBER(10);
lu_dpmtexcde VARCHAR2(17);
lu_dpmtincde NUMBER(10);
/* pour mémoriser la recherche du code interne organigramme */
search NUMBER(10);
/* definition du curseur */
CURSOR c1 IS
SELECT civ.codcol, civ.entorg, p_ctc.ctcexcde, p_ctc.dpmtincde, r_dpmt.dpmtexcde, r_dpmt.dpmtincde
FROM p_ctc, p_cpyaddr, jpb_pers civ, r_dpmt
WHERE p_ctc.cpyaddrincde = p_cpyaddr.cpyaddrincde
AND p_cpyaddr.cpyincde = '1000'
AND civ.CODCOL = SUBSTR(p_ctc.CtcExCde,1,5)
AND To_Char(civ.CODAGT) = SUBSTR(p_ctc.CtcExCde,7,5)
AND p_ctc.CtcExCde NOT LIKE '99999%'
AND p_ctc.dpmtincde = r_dpmt.dpmtincde;
BEGIN
Open c1;
LOOP
FETCH c1 INTO lu_codcol, lu_entorg, lu_ctcexcde, lu_ctcdpmtincde, lu_dpmtexcde, lu_dpmtincde;
IF lu_dpmtexcde <> SubStr(lu_codcol,3,3)||'-'||lu_entorg THEN
SELECT r_dpmt.dpmtincde INTO search FROM r_dpmt WHERE r_dpmt.dpmtexcde = SubStr(lu_codcol,3,3)||'-'||lu_entorg;
UPDATE p_ctc SET p_ctc.dpmtincde = search WHERE p_ctc.ctcexcde = lu_ctcexcde;
END IF;
EXIT WHEN c1%NOTFOUND;
END LOOP;
CLOSE c1;
END; |
A l'exécution de mon Pl/Sql j'ai une erreur :
Code:
1 2 3 4 5
| Line Pos Text
7 1 ORA-01403: Aucune donnée trouvée
ORA-06512: à ligne 26
Total execution time 0.266 sec. |
Je ne vois pas d'ou l'erreur peut venir. Merci pour votre aide.