错误ORA-06502按下按钮时的Oracle表单

时间:2019-05-14 05:55:03

标签: oracle oracle11g oracle10g oracleforms oracle-fusion-middleware

我正在尝试将数据从“ CSV”文件显示到Oracle表单。我正在使用Client_Text_IO过程从逗号分隔为“数据块”的“ CSV”文件中读取数据。

我有一列,其中一些数据为空,并且有一些数据。如果我在excel中打开文件,则:

否。 6列,有些行为空:

enter image description here

第6列某些行包含数据:

enter image description here

当我在记事本中打开文件时:

6,6,6000000116,HH00000471,Abdul akbar,,1610223056753

由于空数据,您可以在“ ABDUL AKBAR”后面看到两个逗号

记事本中包含数据:

6,6,6000000189,HH00000544,Raishma bibi,Gul akbar,1610216789294

当我运行过程时,在第6列出现以下错误:

enter image description here

代码:

PROCEDURE p_output_line(p_line varchar2) IS

 vLINE VARCHAR2(4000);
 vVALUE VARCHAR2(1000); 
 vCOMMA_COUNT NUMBER;

BEGIN

 vLINE := p_line;
 vCOMMA_COUNT := LENGTH(vLINE)- LENGTH(REPLACE(vLINE,',',''));

  FOR I IN 1.. vCOMMA_COUNT+1 LOOP  
  vVALUE := SUBSTR(vLINE,1,INSTR(vLINE,',')-1);
IF vVALUE IS NULL THEN
    vVALUE := vLINE;
END IF;    
  vLINE := SUBSTR(vLINE,INSTR(vLINE,',')+1) ; -- CHANGE   123,ABC,9877 TO BE   ABC,9877

  IF I = 1 THEN
:WE_GROUP_HOF_K.CLIENTID := vVALUE; 
 END IF;

 IF I = 2 THEN 
:WE_GROUP_HOF_K.PROJECTID := vVALUE;
 END IF;

 IF I = 3 THEN
:WE_GROUP_HOF_K.GROUP_HOF_ID := vVALUE;
 END IF;

 IF I = 4 THEN
:WE_GROUP_HOF_K.NRSP_HOFID := vVALUE;
 END IF;

 IF I = 5 THEN
:WE_GROUP_HOF_K.HOF_NAME := vVALUE;
 END IF;

 IF I = 6 THEN
    :WE_GROUP_HOF_K.FATHER_NAME := vVALUE;
 END IF;

 END LOOP; 
 EXCEPTION
  WHEN NO_DATA_FOUND THEN
  MESSAGE('Please Check the data type is appropriate on you excel file');
  MESSAGE('Please Check the data type is appropriate on you excel file');
END; 

1 个答案:

答案 0 :(得分:1)

因为它是空的,所以计数无效。 使用拆分功能拆分数据。 Split function

此外,在您的no_data_found异常时,您应该在消息后加上pause;,然后就不必重复两次。