2009-08-19 10 views
6

Czy ktoś wie, jak uzyskać wyzwalacze utworzone przez JDBC. Wydaje się, że problem polega na średniku. Wszelkie opinie bardzo doceniane.Tworzenie wyzwalaczy przez JDBC (wyrocznia)

Następujące SQL działa, gdy uruchomiony na bazie danych, ale nie wtedy, gdy uruchamiane za pomocą następującego kodu Java:

Connection c=null; 
    Statement s=null; 
    try { 
     c=dataSource.getConnection(); 
     s=c.createStatement(); 
     s.executeUpdate("create or replace trigger startuptrigger after insert on startuptest for each row begin insert into startuptest values(99); end"); 
     s.close(); 
     s=null; 
     c.close(); 
     c=null; 
    } catch(SQLException e) { 
     if(s!=null) { try { s.close(); } catch(Exception f){} } 
     if(c!=null) { try { c.close(); } catch(Exception f){} } 
     throw new IOException(e.toString()); 
    } 

Próbowałem s.execute (...) i s.executeUpdate (...) i nie robi różnicy. Używam sterownika ojdbc5.jar. Oracle zwraca błąd:

ORA-04098: trigger 'POLICYUAT.STARTUPTRIGGER' is invalid and failed re-validation 

Odpowiedz

0

Próbowałem powyższego kodu i działa dobrze w tworzeniu wyzwalacza. Więc dlatego powyższe nie działa może być:

  1. Konto, z którym się łączysz, nie masz uprawnień do tworzenia wyzwalaczy: Spróbuj połączyć bezpośrednio i sprawdzić, czy masz prawa.
  2. Ręcznie wykonaj powyższy wyzwalacz w sqlplus i sprawdź, czy tabela istnieje i czy masz prawa do jej wstawienia.
4

Składnia PL/SQL wymaga średnika na końcu koniec na końcu. To jest ciąg powinien być następujący

„stworzyć lub wymienić startuptrigger wyzwalania po wkładką na startuptest dla każdego wiersza rozpocząć wkładkę do startuptest wartości (99); koniec;”

+1

+1 dla stylu piosenki The Doors: _ "pod koniec końca na końcu" _ ;-) – splash

Powiązane problemy