2012-07-24 2 views
0

위치 지정 파일에 데이터를 쓰고 싶습니다. 이전에 파일에 기록되지 않은 데이터 만 기록됩니다. 데이터가 이전에 쓰여졌는지 여부를 결정하는 컬럼이 테이블에 있습니다.위치 지정 파일에 전송되지 않은 데이터 덤핑

필자의 경우 필드 길이가 80이지만 데이터 길이가 30 인 경우 나머지 공간은 공백으로 채워집니다. 예 :

---------------------------------------- 
| Name | SSN  | Integrated | 
---------------------------------------- 
| Doe  | 453214  |  Y  | 
| John  | 1234567890 |  N  | 
| Scarlett | 123  |  N  | 
---------------------------------------- 

첫 번째 레코드가 이전 파일로 전송/기록되었습니다. 따라서 다음 파일에는 전송되지 않습니다. 이름의 길이는 80 자로 고정됩니다. 따라서 이름이 80 자 미만이면 나머지 공백이 공백으로 채워집니다. 이런 식으로 보일거야. 다른 필드에 대해서도 마찬가지입니다.

Name   SSN   
John   1234567890 
Scarlett  123 

어떻게하면됩니까? 미리 감사드립니다. Iam은 오라클 11g을 사용합니다.

편집

좋아, 내가 코드를 작성할 수있게되었습니다. 그러나이 코드를 dbms_jobs에서 사용할 수있는 프로 시저라고 부릅니다. 문제는 내가 프로 시저를 작성하는 방법을 모른다는 것입니다.

DECLARE 
    v_file UTL_FILE.file_type; 
BEGIN 
    v_file := UTL_FILE.fopen('DIR_VR_AD_INTEGRATION', 'HRMtoAD1_'||sysdate, 'w', 32767); 

    FOR x IN (select * from (select RPAD(user_id, 7, ' ') || ' ' || RPAD(pid_company_id, 10, ' ') str from arc_hrvr.vr_ad_integration where integrated = 'N') str where rownum <= 3 order by rownum) 
    LOOP 
     BEGIN 
      UTL_FILE.put_line(v_file, x.str); 
     END; 
    END LOOP; 

    UTL_FILE.fflush(v_file); 
    UTL_FILE.fclose(v_file); 
END; 

답변

1

이것은 처음에는 당신이 시작한 것과는 다른 질문이며 제목은 어떻게 붙여 졌습니까? 자신이해야 할 일의 대부분을 파악한 것이 좋지만, 이것은 정말로 별개의 질문이었습니다. 그러나 그것은 다소 모호했을 것입니다. 그래서 여기에 갈 수도 있습니다 ...

절차 작성에 관한 documentation은 상당히 명확하며, this one과 같은 많은 예제가 있습니다. Google에서 'oracle create procedure'에 대한 첫 번째 히트.

익명의 PL/SQL 블록이 있기 때문에이를 저장 프로 시저로 변환해야합니다.

CREATE PROCEDURE my_procedure_name AS 
    v_file UTL_FILE.file_type; 
BEGIN 
    ... 
END; 
/
+0

Thanks..this 난 그냥 :-) 필요 무엇 :이 경우, 당신은 단지이 DECLARECREATE PROCEDURE my_procedure_name AS로 변경해야합니다, 당신이 패키지의 일부가되고 싶지 않아 가정 – Jaanna