java stored procedure을 이용한 파일삭제를 하려고 하는데요. 0 4 1,045

by 정규직 [PL/SQL] [2015.06.08 23:29:45]


- 파일의 위치는 C:\TEMP\11.pdf 에 있습니다.

- 첫번째 java stored procedure을 아래와 같이 생성했습니다.
CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED "AttachFile" AS
    package module.test;
    import java.io.*;
    import java.util.*;

    public class AttachFile {
        public static int deleteFiles(java.lang.String fileName) {
           try {
      File file = new File(fileName);
                if (file.exists()) {
           file.delete();
           return 1;
                } else {
           return 0;
                }

        } catch(Exception e) {
      return 0;
        }
    }
    }

- 두번째 호출 function을 생성했습니다.
CREATE OR REPLACE FUNCTION FN_JAVA_ATTACHFILE_DELETE (fileName IN VARCHAR2)
 RETURN NUMBER AS LANGUAGE JAVA NAME 'module.test.AttachFile.deleteFiles(java.lang.String) return int';

- 세번째 실행
SELECT FN_JAVA_ATTACHFILE_DELETE('/TEMP/11.pdf') FROM DUAL;
SELECT FN_JAVA_ATTACHFILE_DELETE('C:/TEMP/11.pdf') FROM DUAL;

dual문을 이용해 두문장을 호출 function을 실행했는데요.
실제 파일이 삭제되지가 않네요.

고수님들의 많은 도움 부탁드립니다.

by 아발란체 [2015.06.09 02:46:05]

에러 말씀 없으신거 보니까 에러 없이 실행되는 것 같은데,

2개 DUAL SELECT 구문으로 실행 했을 때 결과는 둘 다 1 떨어지나요?

그리고 boolean delCt = file.delete();  식으로 반환 값 받아 delCt가 true로 정상 삭제 처리 되었는지도 값 찍어보세요 ~.


by 정규직 [2015.06.09 08:18:01]

네. 에러는 없습니다.
리턴값을 찍어보니 둘다 0을 리턴하네요.


by 쿼리back [2015.06.09 09:31:23]
-- 해당 계정에대한 file 삭제 권한 부여를 해보시기 바랍니다.~

EXEC DBMS_JAVA.grant_permission('SCHEMA-NAME', 'java.io.FilePermission', '<<ALL FILES>>', 'read ,write, execute, delete');

 


by 정규직 [2015.06.09 10:09:26]

감사합니다. 잘 해결되었습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입