当前位置: 代码迷 >> Oracle管理 >> 大家帮忙看看这个是什么意思!
  详细解决方案

大家帮忙看看这个是什么意思!

热度:44   发布时间:2016-04-24 05:14:47.0
大家帮忙看看这个是什么意思!!在线等!!!!!!!!
FUNCTION FILL_KNJKIORRK(V_PATIENTID IN VARCHAR2
  ) RETURN VARCHAR2 IS
  strCondition VARCHAR2(50) := '';
  RefCur_KnjKioRrk CursorType;
  strTemp VARCHAR2(50) := '';
  strKnjkiorrk VARCHAR2(32767):='';
  BEGIN
  IF V_PATIENTID IS NOT NULL THEN
  strCondition := strCondition || 'PATIENT_ID = ''' || V_PATIENTID ||'''';
  END IF;
  IF strCondition IS NOT NULL THEN
  strCondition := ' WHERE ' || strCondition ;
  END IF;
  OPEN RefCur_KnjKioRrk FOR 'SELECT
  PAST_NAME KnjKioRrk
  FROM
  TOS_D_PATIENT_PAST
  ' || strCondition ;
LOOP
FETCH RefCur_KnjKioRrk INTO strTemp;
EXIT WHEN RefCur_KnjKioRrk%NOTFOUND;
IF strKnjkiorrk IS NULL THEN
strKnjkiorrk := strTemp;
ELSE
strKnjkiorrk := strKnjkiorrk || '丄'|| strTemp;
END IF;
END LOOP;
  RETURN strKnjkiorrk;
  END FILL_KNJKIORRK;


上面的每句话都是什么意思啊? 能不能解释一下,,,我ORACLE不太熟悉

------解决方案--------------------
SQL code
FUNCTION FILL_KNJKIORRK(V_PATIENTID IN VARCHAR2  ) RETURN VARCHAR2 --定义一个function  返回类型是varchar2IS  strCondition VARCHAR2(50) := '';  RefCur_KnjKioRrk CursorType;  strTemp VARCHAR2(50) := '';  strKnjkiorrk VARCHAR2(32767):='';--定义一坨变量  BEGIN--开始  IF V_PATIENTID IS NOT NULL THEN  strCondition := strCondition || 'PATIENT_ID = ''' || V_PATIENTID ||'''';  END IF;--如果不为空  则字符连接赋值  IF strCondition IS NOT NULL THEN  strCondition := ' WHERE ' || strCondition ;  END IF;--同上  OPEN RefCur_KnjKioRrk FOR 'SELECT  PAST_NAME KnjKioRrk  FROM  TOS_D_PATIENT_PAST  ' || strCondition ;--上面拼好的字符串(一个完整的sql)  可以理解为 直接用游标打开LOOPFETCH RefCur_KnjKioRrk INTO strTemp;EXIT WHEN RefCur_KnjKioRrk%NOTFOUND;IF strKnjkiorrk IS NULL THENstrKnjkiorrk := strTemp;ELSEstrKnjkiorrk := strKnjkiorrk || '丄'|| strTemp;END IF;END LOOP;--循环那个链接的sql字符串取出的值,进行判断赋值  RETURN strKnjkiorrk;--返回结果  END FILL_KNJKIORRK;--大功告成
------解决方案--------------------
LOOP
FETCH RefCur_KnjKioRrk INTO strTemp; --INTO 是oracle的赋值语句
EXIT WHEN RefCur_KnjKioRrk%NOTFOUND;--判断WHEN RefCur_KnjKioRrk为空退出
IF strKnjkiorrk IS NULL THEN --判断strKnjkiorrk IS NULL 
strKnjkiorrk := strTemp;--strKnjkiorrk赋值
ELSE
strKnjkiorrk := strKnjkiorrk || '丄'|| strTemp;;--strKnjkiorrk赋值
END IF;--结束判断
END LOOP;
  相关解决方案