2012-12-08 4 views
0

jdbc 컴파일을 위해 다음 ant 스크립트를 사용하고 있습니다.Ant를 사용한 Jdbc 컴파일

<sql driver="oracle.jdbc.driver.OracleDriver" 
url="jdbc:oracle:thin:@10.184.133.133:1521:SUPP" 
userid="${UsernameB}" 
password="${PasswordB}" 
onerror="continue" 
delimitertype="row" 
delimiter="/" 
keepformat="yes"> 

나는 다음과 같은 내용을 가진 파일이 있습니다

만들거나 CIVW에 대한 동의어 CIVWS 교체; 상기의
/

컴파일 다음 오류 실패.

java.sql.SQLSyntaxErrorException: ORA-00911: invalid character 

나는 구분 기호는/따라서 SQL 문 뒤에 세미콜론 문제가 발생하는 것을 이해합니다. 이와 같은 파일이 수백 개 있으며, 모두 sqlplus에서 제대로 컴파일됩니다. 그러나 jdbc와 함께 실패합니다. 나는 지금 코드를 바꿀 수 없다. 이 문제를 해결할 수있는 방법이 있습니까? 구분 기호를 변경할 수 없습니다. 또한. 제발 제안 해주세요. ";" ";"의 몇 가지로 구분됩니다

+0

이러한 행은 SQL * Plus에서도 마찬가지입니다. '/'는 마지막 문장 ("버퍼")을 실행하여 SQL * Plus에서'crete 또는 replace'가 두 번 실행됩니다. 'create or replace' 대신'create synonym'을 사용하면 실제로 오류가 발생합니다 (객체는 이미 존재합니다) –

답변

0
  1. 먼저 ... delimiter=";" delimitertype="row" ...를 사용하여 PL/SQL 블록이 들어 있는지 확인을 시도 할 수 있습니다 한 줄에 (즉, 바로 뒤 따르는 개행만으로 - 단일 문장으로 실행되도록).

  2. ";" 수동으로 소스 파일을 tmp 디렉토리에 복사 해보고 수동으로 또는 일부 자동 regexp 대체 (예 : antgexp 대체 필터로 ant 복사 작업 사용)로 변경하십시오. 한 줄 구분 기호 (아마도 자동) 별도의 파일에서 이러한 블록을 넣어 그들을 실행 될 수있다 -; ""

  3. 이를 삽입하기위한 또 다른 해결책은 (당신이 운이 좋다면 예를 들어 대체 라인 \1\n;\n\2에 의해 ^(.*end\s*;?)(.*)$ 일치하는 것만으로는 충분이 될 수 있음) <sql><transaction src="<yoursqlfile>.sql" /> <!--...--> </sql> <!--...-->" ANT 작업을 통해

관련 문제