2014-07-26 17 views
0

로컬 시스템에 하나의 폴더를 oracle 테이블로 제공하는 문서를 삽입하려고합니다.PLS-00103 : 다음 중 하나가 나타날 때 심볼 ""이 나타납니다.

오류 (15,7) : PLS-00103 : 나는 아래와 같은 오류를 얻고있다 일정한 예외 테이블 LONG_ 더블 심판 문자 시간 소인 간격 :가 발생했습니다 기호를 ""다음 중 하나 를 기대하는 경우 날짜를 진 국가 문자

DECLARE 
    l_bfile BFILE; 
    l_blob BLOB; 
BEGIN 
    INSERT INTO member_document 
    VALUES (
    SELECT empty_blob(), jf.file_created, jf.file_file_extension 
     FROM FILES JF 
     JOIN MEMBER M ON M.MIG_OLD_ID=JF.PERSON_ID 
    WHERE JF.FILE_ID = 1054 
) 

    RETURN document_file INTO l_blob; 

    l_bfile := BFILENAME(exampledir, '000d779789.pdf'); 
    dbms_lob.fileopen(l_bfile, dbms_lob.file_readonly); 
    dbms_lob.loadfromfile(l_blob, l_bfile, dbms_lob.getlength(l_bfile)); 
    dbms_lob.fileclose(l_bfile); 

    COMMIT; 
END; 

NCHAR 사람이 나를 도와주세요 수 있습니다.

+0

실행하려는 전체 스크립트 또는이 후에 다른 명령이 있습니까? 오류는 15 행 7 열에보고되며 14 행만 표시했습니다. 그 이후에 아마도'/'중간에 다른 문장이 있을까요? –

답변

0

리터럴 행을 삽입 할 때 INSERT INTO ... VALUES (...)를 사용합니다. 그러나 쿼리에서 삽입하는, 그래서 당신은 값 비트를 필요가 없습니다

INSERT INTO MEMBER_DOCUMENT 
     select empty_blob(),JF.FILE_CREATED,JF.FILE_FILE_EXTENSION 
     FROM FILES JF JOIN MEMBER M 
      ON M.MIG_OLD_ID=JF.PERSON_ID 
     where JF.FILE .... 

구문 꽃이 피는 논리를 넘어 얻는 것은 틀려서입니다. 아마도 데이터베이스 테이블에 파일을로드하려고 할 것입니다. 귀하의 코드는 이것을 성취하지 못할 것입니다. 대신이 시도 :

DECLARE 
    l_bfile BFILE; 
    l_blob BLOB; 
BEGIN 
    l_bfile := BFILENAME(exampleDir,'000d779789.pdf'); 
    DBMS_LOB.fileopen(l_bfile, Dbms_Lob.File_Readonly); 
    DBMS_LOB.loadfromfile(l_blob, l_bfile, DBMS_LOB.getlength(l_bfile)); 
    DBMS_LOB.fileclose(l_bfile); 

    INSERT INTO MEMBER_DOCUMENT 
    select l_blob,JF.FILE_CREATED,JF.FILE_FILE_EXTENSION 
    FROM FILES JF JOIN MEMBER M 
    ON M.MIG_OLD_ID=JF.PERSON_ID 
    where JF.FILE_ID=1054; 

    COMMIT; 
END; 
0

이 시도 :

Declare 
    L_bfile      Bfile; 
    L_blob      Blob; 
Begin 
    Insert Into Member_document(Col1, Col2, Col3) 
     (Select Empty_blob(), Jf.File_created, Jf.File_file_extension 
     From Files Jf Join Member M On M.Mig_old_id = Jf.Person_id 
     Where Jf.File_id = 1054) 
    Return Document_file 
    Into L_blob; 
    L_bfile := Bfilename(Exampledir, '000d779789.pdf'); 
    Dbms_lob.Fileopen(L_bfile, Dbms_lob.File_readonly); 
    Dbms_lob.Loadfromfile(L_blob, L_bfile, Dbms_lob.Getlength(L_bfile)); 
    Dbms_lob.Fileclose(L_bfile); 

    Commit; 
End; 

어디에 COL1, COL2와 COL3이 Member_document의 열 이름입니다.

테이블 구조가 변경 될 때 표의 열이 표를 삽입하는 데 사용되는 select의 열과 같지 않으므로 오류가 발생하기 때문에 열 이름을 insert에 넣는 것이 좋습니다. 희망 이게 도움이됩니다!