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;
/ |