[11g] Conversion de CLOB en NUMBER
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
Code:
1 2 3
|
Create Table MaTableInit (Tb1Ch1 VARCHAR2(9), Tb1Ch2 NUMBER, Tb1Ch3 CLOB);
Create Table MaTableFinale (Tb2Ch1 VARCHAR2(9), Tb2Ch2 NUMBER, Tb2Ch3 NUMBER); |
La table initiale contient des enregistrements dont le champ Tb1Ch3 doit être "normalisé" pour que son contenu soit ajouté dans la table finale.
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...
Code:
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;
/ |
J'obtiens l'erreur Oracle suivante :
Code:
PL/SQL: ORA-00932: types de données incohérents ; attendu : NUMBER ; obtenu : CLOB
Lorsque j'ajoute TO_NUMBER() autour de mes SUBSTR(), cela ne marche toujours pas...
Auriez-vous une astuce pour que cela fonctionne ?
Merci beaucoup
EiramO