Bonjour,
Des données sont chargées dans les colonnes d'une table temporaire depuis une table externe. Certains traitements sont à effectuer sur certaines colonnes avant chargement dans la table cible définitive.
Je souhaiterais savoir comment implémenter le tout.
Le chargement table externe vers table temporaire est ok!
Simplement je souhaite savoir si je dois:
1/ Effectuer les calculs (=traitements) sur les colonnes une fois que les données sont chargées dans la table temporaire ?
2/ Ou alors dois-je implémenter les calculs à effectuer sur les colonnes en même temps qu'elles sont chargées depuis la table externe ?
J'ai essayé de faire le traitement après chargement mais le programme ne semble pas aimer. Voilà la structure de mon code :
1/ Chargement dans table temporaire depuis la table externe:
2/ Ma solution de traitement suivait ainsi dans la même procédure :
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 BEGIN IF is_INDICES THEN EXECUTE IMMEDIATE ' INSERT INTO toto_temp ( key_id, evaluation_date, ... etc... event_type, event_amount, terms, termsdate, status ) SELECT keyidseq.NEXTVAL, evaluation_date, ... etc... event_type, event_amount, terms, termsdate, status FROM '||extTableName; ELSE EXECUTE IMMEDIATE ' INSERT INTO toto_temp ( key_id, evaluation_date, ... etc... event_type, event_amount, terms, termsdate, status ) SELECT keyidseq.NEXTVAL, evaluation_date, ... etc... event_type, event_amount, terms, termsdate, status FROM '||extTableName; end if; Exception ... end;
Mais cela ne fonctionne pas.
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 Begin IF IS_NOT_INDICES THEN SELECT ecs.event_type INTO v_event_type FROM TOTO_TEMP ecs WHERE ecs.termsdate = ecs.evaluation_date; AND ecs.status = 'IMPLEMENTED'; IF v_event_type IS NOT NULL THEN SELECT REPLACE(regexp_substr(ecs.event_type, '[[:digit:]]{1}.[[:digit:]]* SPECIAL'),'SPECIAL','') INTO v_event_amount FROM TOTO_TEMP ecs WHERE ecs.termsdate = ecs.evaluation_date AND ecs.status = 'IMPLEMENTED'; END IF; IF v_event_amount IS NOT NULL THEN UPDATE toto_temp SET special_div_in_prov_currency = v_event_amount; END IF;
J'ai eu alors dans l'idée d'implémenter ces traitements directement sur les colonnes durant le processus de chargement mais cela me semble lourd et surtout je ne saurais comment faire.
J'ai donc nesoin d'être guidée.
Merci pour votre aide.
Partager