Reprenons.
Je crois que j'ai trouvé la faille. Ce code devrait vous aller.
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
53
54
55 CREATE OR REPLACE PROCEDURE test2 AS BEGIN DECLARE v_date DATE; v_time DATE; v_requete VARCHAR2 (199); v_formula VARCHAR2 (199); v_result NUMBER; v_id VARCHAR (15); my_rowid UROWID; CURSOR c1 IS SELECT int_start_date, int_start_time, formula, RESULT, ROWID FROM best1.app_iam ORDER BY int_start_date, int_start_time FOR UPDATE; t_rec c1%ROWTYPE; BEGIN OPEN c1; LOOP FETCH c1 INTO t_rec; EXIT WHEN c1%NOTFOUND; SELECT f.ID, f.formula INTO v_id, v_formula FROM best1.formula f WHERE t_rec.int_start_date >= f.int_start_date AND t_rec.int_start_date <= f.int_end_date AND t_rec.int_start_time >= f.int_start_time AND t_rec.int_start_time <= f.int_end_time; v_requete := 'SELECT ' || v_formula || ' FROM APP_IAM WHERE ROWID = ' || t_rec.ROWID; EXECUTE IMMEDIATE v_requete INTO v_result; UPDATE app_iam SET formula = v_id, RESULT = v_result WHERE ROWID = t_rec.ROWID; END LOOP; CLOSE c1; COMMIT; END; END; /
Partager