关于查询的时候动态条件的问题
我的查询时这样的,查询结果要放在游标里,下面会插入其他的表
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是否为空而判断加还是不加,谁帮我看看怎么写,谢谢。
------解决方案--------------------
楼上的是个好方法。。。 我一直想着拼接sql语句上面去了。。。
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达到你要的效果