Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Thank you guys for your answers, It works fine now. The reason was a syntax mistake or the interpretation of my SQL code file with Spring Framefork. When I execute the statements directly by using the execute method of jdbc it works, when I use the Spring functionality for script execution the execution fails. With oracle sql code it seems to be tricky, because if I use hsqldb sql code it works fine.</p> <p>test-condext.xml:</p> <pre><code>... &lt;jdbc:initialize-database data-source=&quot;dataSource&quot; ignore-failures=&quot;DROPS&quot; enabled=&quot;${jdbc.enableSqlScripts}&quot;&gt; &lt;jdbc:script location=&quot;${jdbc.initLocation}&quot; /&gt; &lt;jdbc:script location=&quot;${jdbc.dataLocation}&quot; /&gt; &lt;/jdbc:initialize-database&gt; ... </code></pre> <hr> <p>schema.sql:</p> <pre><code>DROP SEQUENCE SEQ_USER; DROP TABLE "USER" CASCADE CONSTRAINTS; PURGE TABLE "USER"; CREATE TABLE "USER" ( USER_ID NUMBER(10) NOT NULL, CREATOR_USER_FK NUMBER(10) NOT NULL, PRIMARY KEY (USER_ID) ); ALTER TABLE "USER" ADD CONSTRAINT FK_USER_CUSER FOREIGN KEY (CREATOR_USER_FK) REFERENCES "USER" (USER_ID); CREATE SEQUENCE SEQ_USER START WITH 1 INCREMENT BY 1; CREATE TRIGGER "USER_ID_SEQ_INC" BEFORE INSERT ON "USER" FOR EACH ROW WHEN (new.USER_ID IS NULL) BEGIN SELECT SEQ_USER.nextval INTO :new.USER_ID FROM DUAL; END; / ALTER TRIGGER "USER_ID_SEQ_INC" ENABLE;</code></pre> <hr> <p>This works fine! Its important to remove <code>;</code> at the end of statements excepts the trigger statement!!!</p> <pre><code>@Before public void executeSomeSql() { Connection c; try { c = dataSource.getConnection(); c.createStatement() .execute("CREATE TABLE \"USER\" (USER_ID NUMBER(10) NOT NULL, CREATOR_USER_FK NUMBER(10) NOT NULL, PRIMARY KEY (USER_ID))"); c.createStatement() .execute("CREATE SEQUENCE SEQ_USER START WITH 1 INCREMENT BY 1"); c.createStatement() .execute("CREATE OR REPLACE TRIGGER \"USER_ID_SEQ_INC\" BEFORE INSERT ON \"USER\" FOR EACH ROW WHEN (new.USER_ID IS NULL) BEGIN SELECT SEQ_USER.nextval INTO :new.USER_ID FROM DUAL; END;"); } catch (SQLException e) { logger.debug(e); } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload