BEGIN
AN_O_RET_CODE := 0;
AC_O_RET_MSG := '操作成功';
select COUNT (*) INTO COUNTALL from (
select kf_id,o.name kf_name,sessionid,decode(score,'1','点赞','2','不点赞','0','放弃',score) as satis,to_char(create_time,'yyyy-mm-dd HH:MM:ss')
from tb_zxkf_evaluate e
left join tb_sso_oper o on e.kf_id = o.logincode
where to_char(create_time,'yyyymmdd') between BEGINDATE and ENDDATE
);
limit2:=limit1;
if limit1<0 then
limit2:=COUNTALL;
end if;
--/* 结果集返回 */
OPEN CUR_RET FOR
SELECT * FROM (SELECT ROWNUM AS ROW_NUM,WM.* FROM(
select kf_id,o.name kf_name,sessionid,decode(score,'1','点赞','2','不点赞','0','放弃',score) as satis,to_char(create_time,'yyyy-mm-dd HH:MM:ss') as create_time
from tb_zxkf_evaluate e
left join tb_sso_oper o on e.kf_id = o.logincode
where to_char(create_time,'yyyymmdd') between BEGINDATE and ENDDATE
)WM order by create_time desc) WHERE ROW_NUM BETWEEN start1 AND limit2;
EXCEPTION
WHEN OTHERS THEN
AN_O_RET_CODE := -1;
AC_O_RET_MSG := '错误代码:' || SQLCODE || CHR(13) || '错误信息:' || SQLERRM;
END ZXKF_SatisDet;
虽然两个相似,但两个 sql 语句明显不是同个内容来的,一是获取数据总数量,二是查询数据。至于为什么不写在一起,明显前面有个逻辑处理,需要根据具体情况再进行下一步,虽然也可以写成一句,但是明显不如这个清晰。