使用CSV导入Oracle Form.doc
文本预览下载声明
使用CSV、TSV或TXT檔案上傳至FORM方法:
我想在從事Oracle EBS客製的各位應該多少都有碰到User提出是否可以用EXCEL匯入資料。當然除了Oracle Web ADI功能外,另外就是使用下述方法搭配標準檔案上傳到Server在讀取組成二維陣列資料,塞到對應的畫面欄位。因此我在網路上找到了一些資料,稍作修改做了一個共用程式給各位參考!!
一、步驟:
先將FILE_UPLOAD、LOAD_FILE與CLEAR_FND_LOB建立至FORM的程式單元中。備註一
新增按鈕觸發執行。執行內容範例如下:
新增參數:FLE_FILE_NAME、FLE_GFM_ID紀錄上傳檔案ID與名稱。
即可執行將檔案上傳至FORM。
按下執行按鈕則會跳出網頁視窗選取欲上傳之檔案。
選好上傳檔案後點選Submit上傳,則會顯示是否成功。
成功後關閉網頁。點選確認已上傳則開始將檔案複製到FORM中。
導入過程中,在畫面左下角會顯示導入內容且畫面也會持續更新內容。
完全執行完畢後會顯示導入筆數。
二、注意事項:
1.上傳檔案只能是.TXT或.CSV或.TSV且編碼必須為UTF8或ZHT16BIG5否則會失敗。
2.檔案抬頭欄位必須保留且名稱必須與複製BLOCK.ITEM名稱相同。(若欲不同則需修改LOAD_FILE判斷抬頭名稱是否與設定欄位相同)
3.每一列資料皆要設定欄位區隔與換行符號。如下圖欄位區隔為Tab換行區隔為;(可自訂但決定後不可改變)
4.注意若有”上引號時,用EXCEL另存CSV或TSV或TXT檔案時判斷會有問題。需先將”改為其他符號另存新檔後在取替代回”。
5.此公用程式只判斷欄位抬頭欄位名稱是否與設定相同未判斷各欄位資料內容是否符合格式做卡關。若需要可自行在LOAD_FILE中自行加入。可在下圖copy前加入卡關!!
6.在導入之BLOCK(Trigger(ON-ERROR)或關閉FORM時,最好再次呼叫CLEAR_FND_LOB以確保上傳檔案確實刪除避免無用檔案上傳造成伺服器負擔。備註二
備註一 共用程式FILE_UPLOAD、LOAD_FILE與CLEAR_FND_LOB如下:
PROCEDURE LOAD_FILE (V_BLOCK VARCHAR2
, V_FIELD VARCHAR2
, V_COL_SEPARATE VARCHAR2
, V_ROW_SEPARATE VARCHAR2
) IS
FLE_GFM_ID NUMBER;
V_FILE VARCHAR2 (1000);
V_ROW_SEP VARCHAR2 (10);
V_COL_SEP VARCHAR2 (10);
V_COMMA_EXIST BOOLEAN := FALSE;
MY_FIELD DBMS_UTILITY.UNCL_ARRAY;
MY_FIELD_CNT BINARY_INTEGER;
MY_FIELD_LOC BINARY_INTEGER := 1;
I NUMBER;
FILE_LEN NUMBER;
FILE_LOC NUMBER; -- File location
TEMP_DATA VARCHAR2 (10000);
TEMP_TAB VARCHAR2 (10000);
ENTER_LOC NUMBER; -- ENTER_KEY location on temp buffer
TAB_LOC NUMBER; -- TAB_KEY location on temp buffer
TAB_LOC_OLD NUMBER; -- TAB_KEY location on temp buffer
COUNTER NUMBER := 0;
CONTROL_LANGUAGE NUMBER;
V_PERIOD VARCHAR2 (20);
V_DATE DATE;
V_DATE_NAME VARCHAR2 (20);
V_MESG_LEVEL VARCHAR2 (10);
BEGIN
--用,號分開欄位 ex: XYZ To X,Y,Z
DBMS_UTILITY.COMMA_T
显示全部