CREATE OR REPLACE PROCEDURE p_import_csv (
p_FileDir IN VARCHAR2,
p_FileName IN VARCHAR2,
p_TotalInserted IN OUT NUMBER
) AS
v_FileHandle UTL_FILE.FILE_TYPE;
v_NewLine VARCHAR2(100); -- Input line
v_empid i_importtimeattendance.employeeid%TYPE;
v_timeentry i_importtimeattendance.timeentry%TYPE;
v_date i_importtimeattendance.datetimesheet%TYPE;
v_remarks i_importtimeattendance.remarks%TYPE;
v_dateofwork i_importtimeattendance.date_of_work%TYPE;
v_FirstComma NUMBER;
v_SecondComma NUMBER;
v_ThirdComma NUMBER;
v_FourthComma NUMBER;
veer VARCHAR2(500);
vdept VARCHAR2(50);
BEGIN
v_FileHandle := UTL_FILE.FOPEN(p_FileDir, p_FileName, 'r');
p_TotalInserted := 0;
LOOP
BEGIN
UTL_FILE.GET_LINE(v_FileHandle, v_NewLine);
EXCEPTION
WHEN NO_DATA_FOUND THEN
EXIT;
END;
v_FirstComma := INSTR(v_NewLine, ',', 1, 1);
v_SecondComma := INSTR(v_NewLine, ',', 1, 2);
v_ThirdComma := INSTR(v_NewLine, ',', 1, 3);
v_FourthComma := INSTR(v_NewLine, ',', 1, 4);
v_empid := SUBSTR(v_NewLine, 1, v_FirstComma - 1);
v_date := SUBSTR(v_NewLine, v_FirstComma + 1,v_SecondComma-1-v_FirstComma);
v_timeentry := SUBSTR(v_NewLine, v_SecondComma + 1,v_ThirdComma - v_SecondComma - 1);
v_remarks := SUBSTR(v_NewLine,v_ThirdComma+1,v_FourthComma - v_ThirdComma - 1);
v_dateofwork := SUBSTR(v_NewLine,v_FourthComma+1);
SELECT dept_code
INTO vdept
FROM M_Department
WHERE M_Department_ID = (SELECT M_Department_ID
FROM M_Employee_Master
WHERE value = v_empid);
INSERT INTO i_importtimeattendance (i_importtimeattendance_id,ad_client_id,ad_org_id,employeeid, datetimesheet, timeentry,remarks,
i_isimported,processed,ischk,isactive,dept_name,date_of_work
)
VALUES (ad_sequence_nextno('I_ImportTimeAttendance'),1000133,1000305,v_empid, v_date, v_timeentry,v_remarks,'N','N','N','Y',vdept,
v_dateofwork
);
p_TotalInserted := p_TotalInserted + 1;
END LOOP;
UTL_FILE.FCLOSE(v_FileHandle);
-- UTL_FILE.FRENAME ('UTL_DIR',p_FileName,'UTL_DIR',REPLACE (p_FileName,substr(p_FileName,-4,4),TO_CHAR (SYSDATE, 'DD-MON-RR')) || '.csv');
COMMIT;
EXCEPTION
WHEN UTL_FILE.INVALID_OPERATION THEN
UTL_FILE.FCLOSE(v_FileHandle);
RAISE_APPLICATION_ERROR(-20051, 'Loading Failed: Invalid Operation');
WHEN UTL_FILE.INVALID_FILEHANDLE THEN
UTL_FILE.FCLOSE(v_FileHandle);
RAISE_APPLICATION_ERROR(-20052, 'Loading Failed: Invalid File Handle');
WHEN UTL_FILE.READ_ERROR THEN
UTL_FILE.FCLOSE(v_FileHandle);
RAISE_APPLICATION_ERROR(-20053, 'Loading Failed: Read Error');
WHEN UTL_FILE.INVALID_PATH THEN
UTL_FILE.FCLOSE(v_FileHandle);
RAISE_APPLICATION_ERROR(-20054, 'Loading Failed: Invalid Path');
WHEN UTL_FILE.INVALID_MODE THEN
UTL_FILE.FCLOSE(v_FileHandle);
RAISE_APPLICATION_ERROR(-20055, 'Loading Failed: Invalid Mode');
WHEN UTL_FILE.INTERNAL_ERROR THEN
UTL_FILE.FCLOSE(v_FileHandle);
RAISE_APPLICATION_ERROR(-20056, 'Loading Failed: Internal Error');
WHEN VALUE_ERROR THEN
UTL_FILE.FCLOSE(v_FileHandle);
RAISE_APPLICATION_ERROR(-20057, 'Loading Failed: Value Error');
WHEN OTHERS THEN
UTL_FILE.FCLOSE(v_FileHandle);
--RAISE;
veer:=sqlerrm;
END p_import_csv;
/
DECLARE
v NUMBER;
BEGIN
p_import_csv('UTL_DIR','1749.CSV',v);
END;
/