2016-11-07 13 views
0

오라클 데이터베이스에서 바이트를 선택하여 이미지 파일로 변환하려고합니다. 오라클 프로 시저를 작성할 때 UTL_FILE.fopen에서 멈추고 ORA-29280 오류를 반환합니다. Oracle 커뮤니티에서는 OS 레벨 사용자가 폴더에 쓸 수있는 권한이 없거나 upper_cases를 사용해야하기 때문에이 오류가 발생했다고 말합니다. 그러나 제안 1에 대해 .Net을 사용하여 동일한 폴더에 액세스하려고 시도했지만 이미지 파일이 성공적으로 만들어졌습니다. 제안 2에 대해 대문자를 사용하여 시도했지만 여전히 동일한 오류가 발생했습니다. 무엇이 문제 일 수 있습니까? .Net에서 파일을 만들 수 있지만 oracle에서 만들 수없는 이유는 무엇입니까?오라클에서 파일을 열 수 없습니다.

CREATE OR REPLACE PROCEDURE BLOB_UPDATE (file_name in varchar) IS 

    file_ref UTL_FILE.file_type; 
    raw_max_size constant number := 32767; 

begin 

    file_ref := UTL_FILE.fopen('C:\LOB', file_name, 'WB', raw_max_size); 
    -- Here it stops working ! -- 
    .... 
    utl_file.fclose(file_ref); 

END BLOB_UPDATE; 
+0

오라클은 컴퓨터 또는 로컬 설치되어있는 '다음은 내 코드입니다 원격 DB를 사용하고 있습니까? – Kacper

+0

아니오 @Kacper, 내 컴퓨터에 설치되어 있지 않습니다. –

답변

0

하여 DB에 실행하십시오 :

create or replace directory DIR as 'C:\LOB' 
grant read, write on directory DIR to your_user 

그리고 프로 시저에 액세스 디렉토리로 :

file_ref := UTL_FILE.fopen('DIR', file_name, 'WB', raw_max_size); 
+0

죄송 합니다만, oracle procedure 또는 inside를 작성하기 전에 your_user가 무엇을 의미하는지, 위 코드를 어디에 추가해야하는지 이해하지 못합니까? 미안하지만 내 질문에 대해서는 아직 오라클의 초보자입니다. –

+0

@ H.Al : PL/SQL에서 임의의 디렉토리 나 파일에 액세스 할 수 없습니다. 당신이 선언 한 ('CREATE DIRECTORY XXX AS ...') 디렉토리들에 접근 할 수 있고 그것들을 사용하기 전에 필요한 권리를 부여 받았다. 그리고 여러분은 그것들을 상징적 인 이름 (위의 경우'XXX')으로 언급해야합니다. 그렇지 않으면 ORA-29280 오류가 발생합니다. – Codo

+0

@Kacper 이제 your_user가 무엇을 의미하는지 알아 냈습니다. 시작한 후에 코드가 내 프로 시저 내에서 구현되어야하지만 왜 PLS-00103 ora 오류가 반환되는지 모르겠습니다. 뭔가 빠졌습니까? –