Bonjour a tous.

Tout d'abord, je suis desolé mais j'ai aussi laissé ce message sur le forum PL/SQL car je ne savais pas où le mettre pour avoir plus de chance d'avoir une réponse.


Je debute dans les bases de données et encore plus dans Oracle.
Au boulot, on a une table Document qui contient entre autre une colonne ID_DOCUMENT qui est unique et sans doublons.

On créé une table DOCUMENT_SAV qui contient deux colonnes:
ID_DOCUMENT qui est une copie de la colonne de la table DOCUMENT
ID_INDEXE qui contient tous les nombres de 2000 à x. Cette colonne est aussi unique et sans doublons

en fait, le but est de réindexer les ID_DOCUMENT dans la table DOCUMENT.

Ensuite, je créé une table DOCUMENT_ALEX qui est une copie de la table DOCUMENT.
Et je fait ce code:

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
declare
  cursor c1 IS 
     SELECT   INDEX_DOCUMENT,ID_DOCUMENT
       FROM   DOCUMENTS_SAV
       ORDER BY ID_DOCUMENT;
c11 c1%rowtype;
 
begin
  open c1;
    loop
    fetch c1 INTO c11;
    exit when c1%notfound;
       begin
         UPDATE DOCUMENTS_ALEX
         SET ID_DOCUMENT = c11.INDEX_DOCUMENT
         WHERE ID_DOCUMENT = c11.ID_DOCUMENT;
       end;
    end loop;
  close c1;
end;
Normalement, le curseur parcours la table DOCUMENT_SAV (qui, je le rappelle n'a aucun doublons) et réindexe les ID_DOCUMENT de la table DOCUMENT_ALEX.

Le probleme, c'est que ma table DOCUMENT_ALEX a des doublons elle... Je ne comprend pas trop comment fonctionne les curseurs mais normalement, ils sont censé parcourir ma table DOCUMENT_SAV sans doublons et donc etre unique...

Quelqu'un aurait il une idée parce que c'est malheureusement urgent et que je comprend pas!

Merci beaucoup a vous