存储过程 动态查询条件的问题

我的查询时这样的,查询结果要放在游标里,下面会插入其他的表
CURSOR curBzj IS
SELECT a.hac010,a.hac013
FROM v_hc02 a
WHERE a.hac010 = pxgz
AND a.hac013 = jqgz
AND a.hac008 = bmfs
AND a.hac016 >=to_date(starttime,'YYYY-MM-DD')
AND a.hac016 <=to_date(starttime,'YYYY-MM-DD')
GROUP BY a.hac010,a.hac013;

其中where 里的查询条件根据值bmfs、jqgz是否为空而判断加还是不加,谁帮我看看怎么写,谢谢。

那你不能够这样写。
bmfs、jqgz为传递进来的参数
p_bmfs varchar2
p_jqgz varchar2
变量申明一下:
v_sql varchar2(32000)
v_filter varchar2(4000)

然后:
v_filter:='WHERE a.hac010 = pxgz
AND a.hac016 >=to_date(starttime,'YYYY-MM-DD')
AND a.hac016 <=to_date(starttime,'YYYY-MM-DD') ';

if p_bmfs is not null then
v_filter:=v_filter||' and a.hac008='||p_bmfs;
end if;

if p_jqgz is not null then
v_filter:=v_filter||' and a.hac013= '||p_jqgz;
end if;

像这样的通过拼接sql达到你要的效果
温馨提示:答案为网友推荐,仅供参考