今天朋友说他在存储过程中使用到了count函数,可得到的结果是-1,我不太相信,什么时候会出现这个情况
他是这样写的,有兴趣的帮看一下
CREATE OR REPLACE PROCEDURE MEDADM.DAY_ADT2 (STARTDATE DATE, ENDDATE DATE) AS
CURSOR r_cur3 IS
 SELECT PATS_IN_HOSPITAL.DEPT_CODE,PAT_VISIT.IDENTITY,
    COUNT(PATS_IN_HOSPITAL.PATIENT_ID) in_hospital_num,
    SUM(DECODE(PATS_IN_HOSPITAL.PATIENT_CONDITION,'1',1,'2',1,0)) CRITICAL
 FROM PAT_VISIT,PATS_IN_HOSPITAL
 WHERE (PAT_VISIT.PATIENT_ID = PATS_IN_HOSPITAL.PATIENT_ID ) and
   (PAT_VISIT.VISIT_ID = PATS_IN_HOSPITAL.VISIT_ID )
 GROUP BY PATS_IN_HOSPITAL.DEPT_CODE,
    PAT_VISIT.IDENTITY;row_rec3 r_cur3%ROWTYPE; OPEN r_cur3;
  LOOP
   FETCH r_cur3 INTO row_rec3;
   EXIT WHEN r_cur3%NOTFOUND OR r_cur3%NOTFOUND IS NULL;
     IF row_rec3.dept_code IS NOT NULL THEN
     IF row_rec3.identity IS NULL THEN
        row_rec3.identity:='其他';
     END IF;
   UPDATE DEPT_ADT_DAY SET
     bed_used_num=row_rec3.in_hospital_num     WHERE (DEPT_ADT_DAY.st_date=startdate) and
           (DEPT_ADT_DAY.dept_code = row_rec3.dept_code) AND
   (DEPT_ADT_DAY.identity = row_rec3.identity);
     IF SQL%NOTFOUND OR SQL%NOTFOUND IS NULL THEN
      INSERT INTO DEPT_ADT_DAY (st_date,
dept_code,
        identity,
        adm_outp_num,
from_other_dept_num,
        from_other_hospital_num,
discharge_normal_num,
trans_dept_num,
trans_hospital_num,
died_num,
        bed_used_num)
      VALUES (startdate,
        row_rec3.dept_code,
        row_rec3.identity,0,0,0,0,0,0,0,
row_rec3.in_hospital_num);
     END IF;
    UPDATE DEPT_LOAD_DAY SET
     critical_num=critical_num+row_rec3.critical
     WHERE (DEPT_LOAD_DAY.st_date=startdate) and
           (DEPT_LOAD_DAY.dept_code = row_rec3.dept_code);
     IF SQL%NOTFOUND OR SQL%NOTFOUND IS NULL THEN
       INSERT INTO DEPT_LOAD_DAY (st_date,
dept_code,
        critical_num)
       VALUES (startdate,
          row_rec3.dept_code,
        row_rec3.critical);
     END IF;
     END IF;
    END LOOP;
    CLOSE r_cur3;不胜感激