Bonjour,
Je n'arrive pas à convertir une partie d'un champ de type CLOB en NUMBER.
Peut-être pouvez-vous m'aider.
Voici la description de mes tables
La table initiale contient des enregistrements dont le champ Tb1Ch3 doit être "normalisé" pour que son contenu soit ajouté dans la table finale.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Create Table MaTableInit (Tb1Ch1 VARCHAR2(9), Tb1Ch2 NUMBER, Tb1Ch3 CLOB); Create Table MaTableFinale (Tb2Ch1 VARCHAR2(9), Tb2Ch2 NUMBER, Tb2Ch3 NUMBER);
Par normalisation, j'entends extraction d'un certain nombre de caractère que Tb1Ch3 pour en faire un tuple dans la table finale. Il est possible de faire plusieurs tuples "finaux" à partir des données du Tb1Ch3...
J'obtiens l'erreur Oracle suivante :
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 DECLARE CURSOR c_moncurseur IS SELECT Tb1Ch1, Tb1Ch2, Tb1Ch3 FROM MaTableInit; BEGIN FOR moncurs IN c_moncurseur LOOP IF Tb1Ch2>0 THEN FOR j IN 1..Tb1Ch2 LOOP INSERT INTO MaTableFinale(Tb2Ch1, Tb2Ch2, Tb2Ch3) VALUES (Tb1Ch1, j, SUBSTR(SUBSTR(Tb1Ch3,(10*(j-1))+1,10),13,3)); END LOOP; END IF; END LOOP; COMMIT; END; /
Lorsque j'ajoute TO_NUMBER() autour de mes SUBSTR(), cela ne marche toujours pas...
Code : Sélectionner tout - Visualiser dans une fenêtre à part PL/SQL: ORA-00932: types de données incohérents ; attendu : NUMBER ; obtenu : CLOB
Auriez-vous une astuce pour que cela fonctionne ?
Merci beaucoup
EiramO
Partager