|
llkyq 发表于 2015-5-15 08:20 ![]()
因为没有功力不够,不知如何修改,是否可以提供Package XYG_ALD_FILE_PKG 的代码!
XYG_ALD_FILE_PKG.CONVERT_FILE_BLOB
所以主要是:CONVERT_FILE_BLOB的代码,其实在PDF有的。我贴一下给你,你再稍微改一下就可以了:
FUNCTION CONVERT_FILE_BLOB(
P_FILEDIR IN VARCHAR2 ---文件路径 /usr/usr/glmr/customer
,P_FILENAME IN VARCHAR2 ---文件名称 DHS.csv
,P_RAISE IN NUMBER DEFAULT XYG_PUB_CONST_PKG.C_TRUE
)
RETURN BLOB
IS
L_RESULT BLOB := empty_blob();
L_FILEDIR VARCHAR2(240);
l_files bfile;
l_dest_offset BINARY_INTEGER;
l_src_offset BINARY_INTEGER;
L_PROCESS_PHASE NUMBER;
BEGIN
L_PROCESS_PHASE := 0;
SELECT DIRECTORY_NAME
INTO L_FILEDIR
FROM all_directories
WHERE 1=1
AND (UPPER(DIRECTORY_PATH) = CASE WHEN SUBSTR(P_FILEDIR,-1) = '/' THEN UPPER(SUBSTR(P_FILEDIR,1,LENGTH(P_FILEDIR)-1))
ELSE UPPER(P_FILEDIR)
END
OR UPPER(DIRECTORY_PATH) = UPPER(P_FILEDIR)
OR DIRECTORY_NAME = P_FILEDIR)
AND ROWNUM <=1;
--DBMS_OUTPUT.PUT_LINE('L_FILEDIR:'||L_FILEDIR);
L_PROCESS_PHASE := 1;
l_files := bfilename (L_FILEDIR,P_FILENAME);
dbms_lob.createtemporary(lob_loc => L_RESULT,
cache => true,
dur => dbms_lob.call);
l_dest_offset := 1;
l_src_offset := 1;
dbms_lob.open(l_files,dbms_lob.lob_readonly);
dbms_lob.loadblobfromfile(L_RESULT--dest_lob IN OUT NOCOPY BLOB,
,l_files--src_lob IN BFILE,
,dbms_lob.lobmaxsize--amount IN INTEGER,
,l_dest_offset--dest_offset IN INTEGER := 1,
,l_src_offset--src_offset IN INTEGER := 1
);
L_PROCESS_PHASE := 2;
dbms_lob.close(l_files);
L_PROCESS_PHASE := 99;
RETURN L_RESULT;
EXCEPTION
WHEN OTHERS
THEN
IF P_RAISE = XYG_PUB_CONST_PKG.C_TRUE
THEN
XYG_PUB_COMMON_PKG.RAISE_ERROR(
'-20001' --'ERR_DEFAULT_CODE'
,SQLERRM
,'转换文件有异常错误!进度:'||L_PROCESS_PHASE
);
--DBMS_OUTPUT.PUT_LINE ('THERE ARE SOME ERROR, PLEASE CONTACT WITH MIS');
ELSE
--UTL_FILE.FCLOSE (L_FILEHANDLE);
RETURN empty_blob();
END IF;
END; |
|