上下文:我编写的函数返回循环中最后一条记录的值。
我需要一个返回满足条件的值的函数。例如。一个ID有5条记录,如果满足第一个条件,则不应转到下一个条件。但是我的函数会返回满足条件的最后一条记录
create or replace FUNCTION fwt_get_holds(
i_id id.table_im%TYPE
) RETURN VARCHAR2 IS
o_level VARCHAR2(4000);
BEGIN
o_level := null;
FOR c IN ( SELECT DISTINCT sprhold_hldd_code
FROM
sprhold,
stvhldd
WHERE
stvhldd_code = sprhold_hldd_code
AND sprhold_hldd_code LIKE 'T%'
AND sprhold_to_date >= to_date(sysdate)
AND sprhold_pidm = i_id)
LOOP
IF c.sprhold_hldd_code in ('TF','TB','TY','TL','TS')
then
o_level:='Level 1';
ELSE IF c.sprhold_hldd_code not in ('TF','TB','TY','TL','TS')
then
o_level:='Level 2';
ELSE
o_level := 'Level 3';
END IF;
END IF;
RETURN o_level;
END LOOP;
END fwt_get_holds;
if the ID that is passed has 5 recorsd like ('T2','TL','T6','T8','T1') it should return level 1 .. but my code return level 2 as it reads the last records in the loop.