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)

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;
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
          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
Merci de votre aide