ORA-06502数值或值误差字符串缓冲小

时间:2018-02-14 06:59:01

标签: oracle

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;
/

1 个答案:

答案 0 :(得分:0)

如果vPURC_NO VARCHAR2 (20000);不够大,请将其放大,或使用CLOB数据类型。