如何oracle的存储过程,为什么有两段相似的代码,而不是写一段?

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;
阅读 1.6k
1 个回答

虽然两个相似,但两个 sql 语句明显不是同个内容来的,一是获取数据总数量,二是查询数据。至于为什么不写在一起,明显前面有个逻辑处理,需要根据具体情况再进行下一步,虽然也可以写成一句,但是明显不如这个清晰。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题