Je n'arrive pas a compiler ce programme à l'origine fait sous interbase que je voudrais executer sous oracle kelkun pourrait t il m aider

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
connect system/manager@adi2;
grant create any procedure to hdr;
 
connect hdr/hdr@adi2
SET TERM ON ;
 
CREATE SEQUENCE T_IDENTITES_Seq INCREMENT BY 1 NOMAXVALUE NOMINVALUE NOCYCLE CACHE 20 NOORDER;
 
CREATE OR REPLACE TRIGGER T_IDENTITES_ID_Trg
before insert on T_IDENTITES
for each row
DECLARE
   MonID number := NULL;
BEGIN
   select T_IDENTITES_Seq.nextval into MonID from dual;
   :new.ID := MonID;
END;
/
 
CREATE OR REPLACE PROCEDURE CREER_IDENTITES
(
  PNOMBRE NUMBER
)
AS
    I NUMBER;
    vID NUMBER;
    vMODULO NUMBER;
    vSEXE CHAR(1);
    vDATE_NAISS DATE;
    vMOIS NUMBER;
    vJOUR NUMBER;
    vANNEE NUMBER;
    vMAX_PRENOMS NUMBER;
    vMIN_PRENOMS NUMBER;
    vNB_PRENOMS NUMBER;
    vPRENOM NUMBER;
    vMAX_NOMS NUMBER;
    vMIN_NOMS NUMBER;
    vNB_NOMS NUMBER;
    vNOM NUMBER;
    vNOM2 NUMBER;
    BEGIN
      I := 0;
      SELECT MAX(ID) FROM T_IDENTITES FOR :vID;
      vID = vID +1;
      SELECT MAX(ID) FROM T_PRENOMS FOR :vMAX_PRENOMS;
      SELECT MIN(ID) FROM T_PRENOMS FOR :vMIN_PRENOMS;
      vNB_PRENOMS = vMAX_PRENOMS - vMIN_PRENOMS;
      SELECT MAX(ID) FROM T_NOMS FOR :vMAX_NOMS;
      SELECT MIN(ID) FROM T_NOMS FOR :vMIN_NOMS;
      vNB_NOMS = vMAX_NOMS - vMIN_NOMS;
      WHILE (I < PNOMBRE) DO
        BEGIN
          I = I + 1;
          vID = T_IDENTITES_ID_Trg;
          vMODULO = vID - ((vID /2) * 2);
          IF (vMODULO = 0)
            THEN vSEXE = 'F';
            ELSE vSEXE = 'M';
          vMODULO = vID - ((vID /12) * 12);
          vMOIS = vMODULO + 1;
          vMODULO = vID - ((vID /28)) * 28);
          vJOUR = vMODULO + 1;
          vMODULO = vID - ((vID /99) * 99);
          vANNEE = vMODULO + 1903;
          vDATE_NAISS = vMOIS||'/'||vJOUR||'/'||vANNEE;
          vMODULO = vID - ((vID / vNB_PRENOMS) * vNB_PRENOMS);
          vPRENOM = vMODULO + vMIN_PRENOMS;
          vMODULO = vID - ((vID / vNB_NOMS) * vNB_NOMS);
          vNOM = vMODULO + vMIN_NOMS;
          INSERT INTO T_IDENTITES (
              ID,
              SEXE,
              DATE_NAISS )
            VALUES (
              :vID,
              :vSEXE,
              :vDATE_NAISS );
          INSERT INTO T_PRENOMS_IDENTITES (
              IDENTITE,
              PRENOM,
              USUEL )
            VALUES (
              :vID,
              :vPRENOM,
              'U' );
          INSERT INTO T_NOMS_IDENTITES (
              IDENTITE,
              NOM,
              NATURE )
            VALUES (
              :vID,
              :vNOM,
              'N' ); /* Nom de naissance */
          vMODULO = vID - ((vID /4) * 4);
          IF (vMODULO = 0) THEN /* Une femme sur deux */
            BEGIN
              vNOM2 = vMIN_NOMS + vMAX_NOMS - vNOM; /* Autre valeur dans le même intervalle */
              IF (vNOM = vNOM2) THEN vNOM2 = vNOM2 + 1;
              INSERT INTO T_NOMS_IDENTITES (
                  IDENTITE,
                  NOM,
                  NATURE )
                VALUES (
                  :vID,
                  :vNOM2,
                  'M' ); /* Nom marital */
            END
        END
    END
 
 
SET TERM OFF; 
COMMIT WORK;




merci d avance

[Balises code ajoutées par Helyos]