Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/01/2012, 10h43   #1
Nouveau Membre du Club
 
Inscription : janvier 2008
Messages : 109
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 109
Points : 33
Points : 33
Par défaut ora-01002: extraction hors séquence

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
PROCEDURE raz_pool_UOC IS
 
CURSOR c_all_users IS
SELECT * FROM utilisateur_ora
WHERE REGEXP_LIKE(UTO_USR_NAME, '^UOC[0-9]{3}$') 
FOR UPDATE;
 
TraceLog varchar2(150);
newpasswd varchar2(30);
Requete varchar2(150);
sec_en_plus number:=0;
v_user_name c_all_users%ROWTYPE;
 
BEGIN
  OPEN c_all_users;
  LOOP
  FETCH c_all_users INTO v_user_name;
 
   TraceLog := 'v_user_name.UTO_USR_NAME=*'||v_user_name.UTO_USR_NAME||'*';
   PKG_COM.Ecrire_trace( PKG_COM.INF,
                            'Test raz_pool_UOC',
                            SUBSTR(TraceLog,1,300),
                            '',
                            'PKG_OTP.raz_pool_UOC');
    sec_en_plus:=sec_en_plus+1;
    newpasswd:=pkg_otp.CreateRandomPassword;
  -- raz de la table UTILISATEUR_ORA
    UPDATE utilisateur_ora 
    SET UTO_PWD_GPL=newpasswd, UTO_JAN_SEQ=NULL, UTO_STA='LIBRE', 
    UTO_DATE_STATUT=sysdate+(sec_en_plus/86400), UTO_ID_ORA=NULL, UTO_ID_THREAD=NULL
    WHERE CURRENT OF c_all_users;
 
  -- raz pwd Oracle, unlock au cas ou 
    Requete:='ALTER USER '||v_user_name.UTO_USR_NAME||' ACCOUNT UNLOCK';
    Execute immediate Requete;
    Requete:='ALTER USER '||v_user_name.UTO_USR_NAME||' IDENTIFIED BY '||newpasswd;
    Execute immediate Requete;
  END LOOP;
  CLOSE c_all_users;
  COMMIT;
  EXCEPTION
  WHEN OTHERS THEN
     PKG_COM.Ecrire_trace( PKG_COM.ERR,
                           SUBSTR(SQLERRM,1,300),
                           SUBSTR(Requete,1,300),
                           'OTHERS - RAZ pool UOC',
                           'PKG_OTP.raz_pool_UOC');
END raz_pool_UOC;
D'ou provient cette erreur ? Lors de l'execution de la proc un seul tuple est bel et bien modifié.

Merci pour votre aide
Moostiq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 11h04   #2
Nouveau Membre du Club
 
Inscription : janvier 2008
Messages : 109
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 109
Points : 33
Points : 33
OK il manquait EXIT WHEN c_all_users%NOTFOUND... .
Moostiq est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h37.


 
 
 
 
Partenaires

Hébergement Web