琥珀玲珑
琥珀玲珑的世界,也是你们的世界哦。大家一起来吧!!!!

CREATE OR REPLACE PROCEDURE GETUSERLISTPAGE_PROC(QYMC STRING,ZCH STRING,JYCS STRING,
   FDDBR STRING,QYZTFLAG STRING,PAGENUM NUMBER,MAXNUM NUMBER,PAGES OUT NUMBER,
      SIZES OUT NUMBER,L_C STRING,RESULTS_OUT OUT SYS_REFCURSOR)
 --内网综合查询
 IS
 WHERES STRING(30000):='';
 S STRING(30000);
 --v_firstNum number:=(pagenum-1)*maxnum + 1;--rownum 是从 1 开始的
 V_FIRSTNUM NUMBER:=PAGENUM+1;--ROWNUM 是从 1 开始的
 V_ENDNUM NUMBER:=((PAGENUM+15)/15)*MAXNUM;
 BEGIN
    IF QYMC IS NOT NULL THEN
      WHERES:=WHERES||'AND QYMC LIKE ''%'||QYMC||'%''';
    END IF;
    IF ZCH IS NOT NULL THEN
      WHERES:=WHERES||'AND ZCH LIKE '''||ZCH||'%''';
    END IF;
    IF JYCS IS NOT NULL THEN
      WHERES:=WHERES||'AND JYCS LIKE ''%'||JYCS||'%''';
    END IF;
    IF FDDBR IS NOT NULL THEN
      WHERES:=WHERES||'AND FDDBR LIKE ''%'||FDDBR||'%''';
    END IF;
    IF QYZTFLAG IS NOT NULL THEN
       IF INSTR(QYZTFLAG,'A') > 0 THEN
          WHERES:=WHERES||'AND PDDJ IS NULL';
       ELSE
          WHERES:=WHERES||'AND PDDJ = '''||QYZTFLAG||'''';
       END IF;
    END IF;
    --求游标集合
    IF L_C IS NOT NULL THEN
       S:='SELECT NBXH,ZCH,QYMC,JYCS,FDDBR,DJJG,CLRQ,QYLX,QYLXFLAG,QYZTFLAG,PDDJ,ZHFZ FROM
                  (SELECT NBXH,ZCH,QYMC,JYCS,FDDBR,DJJG,CLRQ,QYLX,QYLXFLAG,QYZTFLAG,(CASE WHEN (PDDJ IS NULL) THEN ''A'' ELSE PDDJ END ) AS PDDJ,
                  (CASE WHEN (ZHFZ IS NULL) THEN 100 ELSE ZHFZ END ) AS ZHFZ,ROWNUM AS RN FROM
                  (SELECT NBXH,ZCH,QYMC,ZS AS JYCS,FDDBR,
                  (SELECT ORGAN_NAME FROM SM_ORGAN_TB WHERE ORGAN_NO=DJJG) AS DJJG,CLRQ,QYLX,1 AS QYLXFLAG,XYDJ AS QYZTFLAG,
                  (SELECT QYZHPFZT.PDDJ FROM QYZHPFZT WHERE QYZHPFZT.ZCH=AQYDJSX.ZCH ) AS PDDJ,
                  (SELECT QYZHPFZT.ZHFZ FROM QYZHPFZT WHERE QYZHPFZT.ZCH=AQYDJSX.ZCH) AS ZHFZ
                  FROM AQYDJSX WHERE  TSLX=''1'' AND QYLX NOT LIKE ''8%''
                  UNION  ALL
                  SELECT NBXH,ZCH,ZHMC AS QYMC,JYDZXXDZ AS JYCS,FZRXM AS FDDBR,(SELECT ORGAN_NAME FROM SM_ORGAN_TB WHERE ORGAN_NO=DJJG) AS DJJG,
                  CLRQ,''9999'' AS QYLX,2 AS QYLXFLAG,XYDJ AS QYZTFLAG,(SELECT QYZHPFZT.PDDJ FROM QYZHPFZT WHERE QYZHPFZT.ZCH=GTDJ.ZCH) AS PDDJ,
                  (SELECT QYZHPFZT.ZHFZ FROM QYZHPFZT WHERE QYZHPFZT.ZCH=GTDJ.ZCH) AS ZHFZ
                  FROM GTDJ WHERE JYZT=''1'')
                  WHERE 1=1 '||WHERES||' ORDER BY QYLX) WHERE RN >='||V_FIRSTNUM||' AND RN <=' || V_ENDNUM;
         OPEN RESULTS_OUT FOR S;
    END IF;
    --求总条数
    SIZES:=0;
    PAGES:=0;
    IF L_C IS NULL THEN
       S:='SELECT COUNT(1) FROM (select ZCH,QYMC,JYCS,FDDBR,JYCS,QYZTFLAG,
                  (CASE WHEN (PDDJ IS NULL) THEN ''A'' ELSE PDDJ END ) AS PDDJ from(
                  SELECT ZCH,QYMC,FDDBR,ZS AS JYCS,XYDJ AS QYZTFLAG,
                  (SELECT QYZHPFZT.PDDJ FROM QYZHPFZT WHERE QYZHPFZT.ZCH=AQYDJSX.ZCH ) AS PDDJ
                  FROM AQYDJSX WHERE  TSLX=''1'' AND QYLX NOT LIKE ''8%''
                  UNION  ALL
                  SELECT ZCH,ZHMC AS QYMC,FZRXM AS FDDBR,JYDZXXDZ AS JYCS,XYDJ AS QYZTFLAG,
                  (SELECT QYZHPFZT.PDDJ FROM QYZHPFZT WHERE QYZHPFZT.ZCH=GTDJ.ZCH) AS PDDJ
                  FROM GTDJ WHERE JYZT=''1'')
                  WHERE 1=1 '||WHERES||')';
                
        EXECUTE IMMEDIATE S INTO SIZES;
        --求总页数
        IF MOD(SIZES,MAXNUM)=0 THEN
           PAGES := SIZES/MAXNUM;
        ELSE
           PAGES := SIZES/MAXNUM + 1;
        END IF;
     END IF;
 END GETUSERLISTPAGE_PROC;

posted on 2015-03-05 11:54  琥珀玲珑  阅读(644)  评论(0)    收藏  举报