Bien le bonjour à tous. Voila je dois réaliser une procédure stocké en pl sql qui permet d'archiver des informations obsolètes (fin de contrat et autres). Je vous mes le code, qui pour moi me semble juste (deux jours à plancher dessu sans succés) et les erreurs qui en découlent.

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
23
24
25
26
27
28
29
30
31
CREATE OR REPLACE PROCEDURE Archivage
IS
        Date DATES%RowType DEFAULT SysDate;
        CURSOR Cu_Resident is (select * from Bateau B, Occuper O where B.NumB = O.NumB);
        CURSOR Cu_Stationnement is (select * from Stationner);
        order_dym varchar2(300);
BEGIN
        FOR S IN Cu_Stationnement
        LOOP
                IF((S.DUREE_S+to_char(S.VALEUR,'mm'))>to_char(Date, 'mm')) THEN
                        order_dym := 'INSERT INTO Ar_Stationnement (Valeur, Bassin, Ponton, Num_Emp, NumB, Duree_S)
                                    -- VALUES (' || S.Valeur || ',' || S.Bassin || ',' || S.Ponton || ',' || S.Num_Emp ||',' || S.NumB || ',' || S.Duree_S || ')';
                        EXECUTE IMMEDIATE order_dym;
                        order_dym := 'DELETE FROM Stationner WHERE Valeur=' || S.Valeur || ' and Bassin=' || S.Bassin || ' and Ponton=' || S.Ponton || ' 
                                     and Num_Emp=' || S.Num_Emp;
                        EXECUTE IMMEDIATE order_dym;
                END IF;
        END LOOP;
 
        FOR R IN Cu_Resident
        LOOP
                IF((R.DUREE_O+to_char(R.Valeur,'mm'))>to_char(Date,'mm')) THEN
                        order_dym := 'INSERT INTO Ar_Resident (NumB, Nom)
                             VALUES (' || R.NumB || ',' || R.Nom || ')';
                        EXECUTE IMMEDIATE order_dym;
                        order_dym := 'DELETE FROM Bateau WHERE ' || R.NumB || '=NumbB and ' || R.Nom || '=Nom';
                        EXECUTE IMMEDIATE order_dym;
                END IF;
        END LOOP;
END;
/

et la réponse d'oracle
LINE/COL ERROR
-------- -----------------------------------------------------------------
3/7 PL/SQL: Item ignored
3/29 PLS-00382: expression du mauvais type
10/3 PL/SQL: Statement ignored
10/49 PLS-00320: déclaration de type de cette expression est
incomplète ou mal structurée

20/2 PL/SQL: Statement ignored
20/2 PLS-00402: alias requis dans liste de curseur SELECT pour éviter
noms de col. en double

En espérant avoir posté au bon endroit.
Merci de votre aide futur (du moins je l'espère).