그래서이 parse_file 'clean_files_up procedure'절차를 변경하려고합니다. 나는 변경 사항을 코딩했지만 테스트 한 후에는 실현했습니다. 실제로 무슨 일이 일어나고 있는지 이해하는 데 어려움을 겪고 있습니다. 필자는 결코 파일 또는 utl_file을 구문 분석하는 작업을 한 적이 없어서 완전히 개념을 undrestand 하지 않습니다. Utl_file 이해하기
그래서 요약하면, 우리는 NEWFILE_DIRECTORY라는 디렉토리에서 현재 SYSDATE로 Files20130807.xxx라는 파일을 찾을 필요가있다. 그것은 다른 디렉토리라고 ORIGINALFILE_DIRECTORY에 을있는 기존 이메일 파일을 실행 한 다음 절차의 끝을 갈 필요 현재 SYSDATE 일치하는 파일을 찾을 수 있다는 것을 의미없는 파일이없는 경우. 현재 sysdate와 일치하는 파일이 있으면 절차를 계속 진행해야합니다. 이지면에 실제로 NEWFILE_DIRECTORY 에서 현재 파일이 다음 열려있는 경우 그렇지 않은 경우에있는 원본 파일을 열어야합니다, 그것은 파일을 구문 분석 한 후 NEWFILE_DIRECTORY에서 현재 SYSDATE과 일치하는 파일을 열 것이다 파일을 열어 ORIGNIALFILE_DIRECTORY를 입력하고 대신 해당 파일을 구문 분석합니다.PROCEDURE clean_files_up IS
v_fileName VARCHAR2(20) := Files || to_char(sysdate, 'YYYYMMDD') || '.xxx';
v_inFile utl_file.file_type;
v_outFile utl_file.file_type;
v_line VARCHAR2(2000);
v_newLine VARCHAR2(2000);
v_count NUMBER := 1;
BEGIN
--No Files found for current date
IF (substr(v_fileName, 6, 8)) <> to_char(sysdate, 'YYYYMMDD') THEN
v_inFile := utl_file.fopen('ORIGINALFILE_DIRECTORY', 'OriginalFile.xxx', 'r');
RETURN; --go to end of procedure
END IF;
v_inFile := utl_file.fopen ('NEWFILE_DIRECTORY', 'v_fileName', 'r');
IF utl_file.is_open(v_inFile) THEN
v_outFile := utl_file.fopen('ORIGINALFILE_DIRECTORY',
'OriginalFile.xxx',
'W');
LOOP
BEGIN
utl_file.get_line(v_inFile, v_line);
IF v_line IS NULL THEN
EXIT;
END IF;
IF v_count > 1 THEN
get_new_csv_line(v_line, v_newLine);
utl_file.put_line(v_outFile, v_newLine);
utl_file.fflush(v_outFile);
END IF;
v_count := v_count + 1;
EXCEPTION
WHEN no_data_found THEN
EXIT;
END;
END LOOP;
utl_file.fclose(v_outFile);
END IF;
EXCEPTION
WHEN OTHERS THEN
Condition;
END clean_files_up;
질문 :
- 그래서 내가 좋아하는 파일 의 목록이/XXX/XXX/XXX 일부 파일 경로에 위치 NEWFILE_DIRECTORY라는 새로운 디렉토리를 작성해야합니다; Files20130804.xxx, Files20130805.xxx, Files20130806.xxx, Files20130807 locted. 이 절차의 내부 내가 새 디렉토리를 작성하거나 심지어 내가 절차
내에서 그것을 만들 수 있으면되는 것이다 어디 를 모르는 CREATE OR로 DIRECTORY의 newfile_directory 교체 '/ XXX/XXX/XXX'
2 .. sysdate와 일치하는지 확인하려면이 파일을 읽어야합니다. 그렇지 않으면 원래 파일을 실행해야하고 다음 proceudre 끝으로 이동하십시오. 이 부분은 BEGIN 바로 뒤에있는 IF 문입니다. 나는 이 NEWFILE_DIRECTORY에서 일치하는 파일 이름 Files20130807.xxx를 찾아서 일치하는지 아닌지를 아는 방법에 대해서 혼란스러워합니다.
3 ..이 # 2에 비슷한 질문은하지만 어떻게 (IF 첫 번째 종료 후) 수행 NEWFILE_DIRECOTRY 및 ORIGINALFILE_DIRECTORY에 대한 파일 경로가 제공 또는 경로를 정의하지 않고있는 위치는 알아?
4 마지막으로 코드를 테스트 할 때 v_inFile : = utl_file.fopen ('NEWFILE_DIRECTORY', 'v_fileName', 'r'); (첫 번째 End IF; 바로 다음), if 및 loop를 계속하지 않고 예외로갑니다.
나는 누군가가 질문에 무슨 일이 일어나고 있는지 이해하기 위해 적어도 도움이됩니다 논문 대답 할 수 그것을 정말 감사하겠습니다. 또한 내가 clearfiy 및 질문 (1-4)해야 할 경우 나는 그것을 할 수 있습니다. 귀하의 질문에