Oracle函数在执行此函数时给出错误。它会给出一个错误,比如第20行的字符缓冲区值太小
CREATE OR REPLACE FUNCTION Fn_Lov_Purchase_Return (vComp_Id NUMBER,
vLoc_Id NUMBER,
vLIne_No NUMBER,
vParam NUMBER,
vAtt_Para NUMBER,
vLot_No VARCHAR2,
vDept_Id NUMBER)
RETURN VARCHAR2
AS
vPURC_NO VARCHAR2 (20000);
CURSOR c1
IS
SELECT M.DOC_NO AS PURC_NO
FROM RJN_GRN_TRANS_ITEMS I, RJN_GRN_TRANS_MASTER M
WHERE I.TRANS_ID = M.TRANS_ID
AND M.TRANS_TYPE = 'GRN'
AND M.COMP_ID = vComp_Id
AND M.COMP_ID = vLoc_Id
AND I.LINE_NO = vLIne_No
AND I.PARAMETER_CODE = vParam
AND I.ATT_PARAMETER_CODE = vAtt_Para
--AND I.LOT_NO= vLot_No
AND M.DEPT_ID = VDept_Id;
c1_Rec c1%ROWTYPE;
BEGIN
vPURC_NO := ' ';
FOR c1_Rec IN c1
LOOP
IF (vPURC_NO) = ' '
THEN
vPURC_NO := c1_Rec.PURC_NO;
ELSE
vPURC_NO := vPURC_NO || ', ' || c1_rec.PURC_NO;
END IF;
END LOOP;
RETURN (vPURC_NO);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
vPURC_NO := 'No-Records';
RETURN vPURC_NO;
END;
/
答案 0 :(得分:0)
如果vPURC_NO VARCHAR2 (20000);
不够大,请将其放大,或使用CLOB
数据类型。