读书人

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

发布时间: 2012-08-11 20:50:31 作者: rapoo

大家帮忙看看这个是什么意思!!在线等!!!!!!!!
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;

读书人网 >oracle

热点推荐