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;
本文来自博客园,作者:余生请多指教ANT,转载请注明原文链接:https://www.cnblogs.com/wangbiaohistory/p/20967341

浙公网安备 33010602011771号