函数应根据条件返回值

时间:2019-10-21 16:46:08

标签: oracle function plsql

上下文:我编写的函数返回循环中最后一条记录的值。
    我需要一个返回满足条件的值的函数。例如。一个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.

0 个答案:

没有答案
相关问题