Bonjour à tous,
J'ai un petit soucis de conversion de données.
Je cherche à insérer dans un champs DEC(18,2) une donnée depuis un fichier plat via SQL*Loader.
malheureusement, contient des séparateurs de milliers sous forme de points et un séparateur de millier sous forme de virgule: 1.000.000,10
Je souhaite une sortie de type: 1000000.10
Pour se faire, j'ai créé une fonction de ce type:
Et je l'insère dans mon SL*Loader ainsi:
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 CREATE or REPLACE FUNCTION str_ratio_convert(w_str_orig IN VARCHAR2) RETURN VARCHAR2 IS w_result_str LONG; BEGIN w_result_str :=''; IF LENGTH(w_str_orig) > 0 THEN -- Remove dot (.) w_result_str := REPLACE(w_str_orig,'.',''); -- Replace coma (,) per dot (.) w_result_str := REPLACE(w_result_str,',','.'); ELSE END IF; RETURN w_result_str; END str_ratio_convert; / exit;
Mais j'ai systématiquement une erreur ORA-06575: Package or Function str_ratio_convert is in an invalid state.
Code : Sélectionner tout - Visualiser dans une fenêtre à part UMSAV "str_ratio_convert(UMSAV)",
J'ai essayé en faisant une soirtie en DEC, mais il n'aime pas.
J'ai tenté en mettant dans SQL*Loader deux points avant le nom de mon champs, mais il n'aime pas:
J'ai vraiment besoin d'un coup de main sur ce problème sachant que je ne peux pas toucher à la configuration d'ORACLE.
Code : Sélectionner tout - Visualiser dans une fenêtre à part UMSAV "str_ratio_convert(:UMSAV)",
Merci beaucoup pour votre aide.
sOnO
Partager