oracle中使用游标

CREATE OR REPLACE PROCEDURE proc_fixed_logic (
    p_b      IN NUMBER,
    p_result OUT SYS_REFCURSOR
)
IS
BEGIN
    OPEN p_result FOR
        SELECT * 
        FROM your_table
        WHERE 
            -- 当 p_b=1 时,匹配 ('s', 'd')
            (p_b = 1 AND a IN ('s', 'd'))
            OR
            -- 当 p_b=2 时,匹配 's'
            (p_b = 2 AND a = 's');
END proc_fixed_logic ;

 

 

-- 假设 v_sql 是你后续要拼接的其他条件字符串
-- 例如:v_sql := ' AND status = 1 AND name = ''Tom''';

OPEN p_result FOR
    SELECT * FROM your_table
    WHERE 
        -- 基础过滤条件(带括号)
        (
            (p_b = 1 AND a IN ('s', 'd')) 
            OR 
            (p_b = 2 AND a = 's')
        )
    -- 这里直接拼接后续条件,因为前面已经封闭好了
    || v_sql; 

posted @ 2026-06-30 15:57  余生请多指教ANT  阅读(6)  评论(0)    收藏  举报