Bonjour,
Je viens ici en désespoir de cause, je n'arrive rien à trouver ni à comprendre pourquoi ça ne marche pas. J'utilise une base de données Oracle 10gR2. J'essaye d'exécuter une procédure pour masquer des informations (basculement d'une base de production à une base de test). Cette procédure doit remplacer les 4 premiers caractères du nom d'une organisation par 'TEST'. Je vérifie donc si le nom de l'organisation fait au moins 4 caractères avant de le remplacer, mais Oracle ne veut pas faire de length sur la ligne renvoyé par mon curseur.
Je laisse mon code parler de lui-même (je suis un bon gros débutant)
et voici ce que j'ai lors de l'exécution :
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 SET serveroutput ON size 1000000 DECLARE my_DB global_name.global_name%Type; CURSOR current_company IS SELECT organization_name FROM company_organization; BEGIN SELECT global_name INTO my_DB FROM global_name; IF my_DB = 'ORADEMO' THEN DBMS_OUTPUT.put_line('Vous etes connecte à ORADEMO ! Effacement des donnees confidentielles en cours'); DELETE FROM mes_tables_confidentielles FOR temp IN current_company LOOP IF LENGTH(temp) > 4 THEN UPDATE company_organization SET organization_name = CONCAT ('TEST', SUBSTR (organization_name, 5)) WHERE organization_name = temp; ELSE UPDATE company_organization SET organization_name = 'TEST' WHERE organization_name = temp; END IF; END LOOP; commit; ELSE DBMS_OUTPUT.put_line('Attention !! Vous n etes pas connecte à ORADEMO !!!'); END IF; END;
Merci de votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 IF LENGTH(temp) > 4 THEN * ERREUR Ó la ligne 40 : ORA-06550: Ligne 40, colonne 7 : PLS-00306: numÚro ou types d'arguments erronÚs dans appel Ó 'LENGTH' ORA-06550: Ligne 40, colonne 4 : PL/SQL: Statement ignored
Partager