2011-09-28 11 views
8

SQL 11 veritabanında bir PL/SQL komut dosyasını yürütmek için sql-maven eklentisini kullanmaya çalışıyorum. senaryo (bildiğim kadarıyla söyleyebilirim gibi) geçerli PL/SQL olmasına rağmen, yürütme bana bir PLS-00103 hata veriyor:Maven: sql-maven eklentisi olan PL/SQL komut dosyası hatası atıyor PLS-00103

SQL komut: (drop_all_tables.sql)

BEGIN 
    EXECUTE IMMEDIATE 'DROP TABLE MY_TABLE'; 
    EXCEPTION 
    WHEN OTHERS THEN 
     IF SQLCODE != -942 THEN 
     RAISE; 
     END IF; 
END; 

Ve eklentisi yapılandırma:

<plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>sql-maven-plugin</artifactId> 
      <version>1.5</version> 

      <dependencies> 
       <dependency> 
        <groupId>oracle</groupId> 
        <artifactId>jdbc</artifactId> 
        <version>11.2.0.2.0</version> 
       </dependency> 
      </dependencies> 
      <executions> 
       <execution> 
        <id>create-schema</id> 
        <phase>process-test-resources</phase> 
        <goals> 
         <goal>execute</goal> 
        </goals> 
        <configuration> 
         <driver>oracle.jdbc.driver.OracleDriver</driver> 
         <url>${jdbc.url}</url> 
         <username>${jdbc.username}</username> 
         <password>${jdbc.password}</password> 
         <autocommit>true</autocommit> 
         <srcFiles> 
          <srcFile>src/main/resources/sql/drop_all_tables.sql</srcFile> 
         </srcFiles> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

Ve bu Maven yürütme çıktısı şu şekildedir:

[ERROR] Failed to execute: BEGIN 
EXECUTE IMMEDIATE 'DROP TABLE MY_TABLE'; 
[INFO] ------------------------------------------------------------------------ 
[ERROR] BUILD ERROR 
[INFO] ------------------------------------------------------------------------ 
[INFO] ORA-06550: line 2, column 43: 
PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following: 

    (begin case declare end exception exit for goto if loop mod 
    null pragma raise return select update while with 
    <an identifier> <a double-quoted delimited-identifier> 
    <a bind variable> << continue close current delete fetch lock 
    insert open rollback savepoint set sql execute commit forall 
    merge pipe purge 
+0

Maven hata iletinizdeki kod çıktısı, iş parçacığınızın en üstünde yayınladığınız kodla eşleşmiyor. – APC

+0

Oh doğru özür dilerim, tablo adının jenerik olması için düzenledim, hata çıktısında bunu yapmayı unuttum - şimdi bitti :) – Guillaume

+0

nokta şu, kod aslında * yürütme * ne olduğundan farklı bize gösteriliyor *. Bize gerçek kodu göstermezseniz, bir sözdizimi hatasını yorumlamamızı nasıl beklersiniz? – APC

cevap

11

Ben eklenti tahmin sql komut dosyasını noktalı virgüllerle bölüyor ve her bir parçayı bağımsız olarak yürütmeye çalışıyor. İlk ifade, oracle ile ilgili olduğu sürece eksik olanıdır. Eklentinin, bu davranışı değiştirmek için iki yapılandırma parametresi vardır, delimiter ve delimiterType. Aşağıdaki gibi bir yapılandırmayı değiştirerek vebloklarını bir satırda bir / ile ayırarak, bu komut dosyasını çalıştırabilmelisiniz.

<configuration> 
    <delimiter>/</delimiter> 
    <delimiterType>row</delimiterType> 
</configuration> 
+0

Teşekkürler, bu işe yarayabilir ve ben Kesinlikle kontrol edeceğim, ancak PL/SQL kullanmadan istediğimi yapmanın alternatif bir yolunu buldum. 'u Maven eklentimin konfigürasyon bölümüne ekledim ve SQL artık çok daha basit bir DROP TABLE MY_TABLE; – Guillaume

+0

Bunu bir yanıt olarak ekleyebilirim, ancak şimdi bir sorumlusu olduğum için kendi soruma bir yanıt ekleyemiyorum :) – Guillaume

+0

Yanıt (maven yapılandırması) çalışıyor ve komut dosyası doğru – Ralph

İlgili konular