CREATE OR REPLACE PROCEDURE RP3005 ( V_RPDATE integer, --月份 SMENU_CURSOR out query_pkg.Query_cur, --结果集 SMENU_CURSOR2 out query_pkg.Query_cur --结果集 ) IS
BEGIN
OPEN SMENU_CURSOR for select S_CH,I_YUCETZ,i_xiaofeil ,to_char(round((i_xiaofeil-I_YUCETZ)/I_YUCETZ,2))*100||'%' I_WUCHALV from ( select substr(yc.s_ch,1,2) S_CH ,sum(decode(yc.i_yucetz,null,yc.i_ycxyrjyl,yc.I_YUCETZ)*ceil(ly.d_xiacicbrq-ly.d_bencicbrq)) I_YUCETZ ,sum(sj.i_xiaofeil) i_xiaofeil from cb_cebenly ly inner join GB_YUCEWCFX yc on yc.s_ch=ly.s_ch and yc.i_fenxiny=ly.i_zhangwuny inner join cb_chaobiaosj sj on yc.i_fenxiny=sj.i_zhangwuny and yc.i_gongci=sj.i_gongci and yc.s_cid=sj.s_cid where ly.s_st='41' and sj.s_st='41' and ly.i_jlzt=0 and ly.i_lingyongzt in(2,3,4) and sj.i_zhangwuny=V_RPDATE and yc.I_FENXINY = V_RPDATE and yc.i_jlzt=0 and yc.i_jlzt=0 group by substr(yc.s_ch,1,2) ) tbl;
OPEN SMENU_CURSOR2 for select V_RPDATE from dual; END;
select S_CH,I_YUCETZ,i_xiaofeil ,to_char(round((i_xiaofeil-I_YUCETZ)/I_YUCETZ,2))*100||'%' I_WUCHALV from ( select substr(yc.s_ch,1,2) S_CH ,sum(decode(yc.i_yucetz,null,yc.i_ycxyrjyl,yc.I_YUCETZ)*ceil(ly.d_xiacicbrq-ly.d_bencicbrq)) I_YUCETZ ,sum(sj.i_xiaofeil) i_xiaofeil from cb_cebenly ly inner join GB_YUCEWCFX yc on yc.s_ch=ly.s_ch and yc.i_fenxiny=ly.i_zhangwuny inner join cb_chaobiaosj sj on yc.i_fenxiny=sj.i_zhangwuny and yc.i_gongci=sj.i_gongci and yc.s_cid=sj.s_cid where ly.s_st='41' and sj.s_st='41' and ly.i_jlzt=0 and ly.i_lingyongzt in(2,3,4) and sj.i_zhangwuny=V_RPDATE and yc.I_FENXINY = V_RPDATE and yc.i_jlzt=0 and yc.i_jlzt=0 group by substr(yc.s_ch,1,2) ) tbl;
语句二
select S_CH,I_YUCETZ,i_xiaofeil ,to_char(round((i_xiaofeil-I_YUCETZ)/I_YUCETZ,2))*100||'%' I_WUCHALV from ( select substr(yc.s_ch,1,2) S_CH ,sum(decode(yc.i_yucetz,null,yc.i_ycxyrjyl,yc.I_YUCETZ)*ceil(ly.d_xiacicbrq-ly.d_bencicbrq)) I_YUCETZ ,sum(sj.i_xiaofeil) i_xiaofeil from cb_cebenly ly inner join GB_YUCEWCFX yc on yc.s_ch=ly.s_ch and yc.i_fenxiny=ly.i_zhangwuny inner join cb_chaobiaosj sj on yc.i_fenxiny=sj.i_zhangwuny and yc.i_gongci=sj.i_gongci and yc.s_cid=sj.s_cid where ly.s_st='41' and sj.s_st='41' and ly.i_jlzt=0 and ly.i_lingyongzt in(2,3,4) and sj.i_zhangwuny=201311 and yc.I_FENXINY = 201311 and yc.i_jlzt=0 and yc.i_jlzt=0 group by substr(yc.s_ch,1,2) ) tbl
------解决思路---------------------- mark 一下,等高手解答 ------解决思路---------------------- 全表扫描与索引扫描对比,并不是索引扫描一定快,大师有句名言:“避免不必要的全表扫描”,因为全表扫描时多块读,大部分索引扫描是单块读,不同场景运用不同的方式。