Hi Wolfgang,

Building on Bernt's suggestion, you can wrap the java bits in a table-dropping procedure. That takes you a step closer to what you want since you can then invoke the procedure from a sql script. Something like the following:

In some public class on the classpath:

   public    static    void    dropTable( String schema, String table )
   {
       try {
Connection conn = DriverManager.getConnection( "jdbc:default:connection");
           PreparedStatement    ps = conn.prepareStatement
               ( "drop table " + schema + "." + table );
           ps.execute();
           ps.close();
       }
       catch (SQLException e) {}
   }

Then the following script works:

create procedure DROP_TABLE
   ( schemaName varchar( 128 ), tableName varchar( 128 ) )
   parameter style java
   modifies sql data
   language java
   external name 'z.dropTable'
;

call DROP_TABLE( 'app', 'foo' );

create table app.foo( keyCol int primary key );

Cheers,
-Rick

Bernt M. Johnsen wrote:

Bernt M. Johnsen wrote (2005-09-26 12:09:26):
[EMAIL PROTECTED] wrote (2005-09-26 18:11:26):
Hi there,

To initialize my database, I want to use an SQL equivalent of "DROP TABLE IF EXISTS MY_TABLE" .

I've tried it but of course didn't work

Does Derby support this kinda SQL or Is there any workaround
I can drop a table if it exists ??
One way could be:
       try {
           stmt.executeUpdate("DROP TABLE MY_TABLE");
       } catch (SQL_Exception e) {
           if (!e.getSQLState().equals("proper SQL-state for table does not 
exist"))

In Derby it is:
            if (!e.getSQLState().equals("42Y55"))


Reply via email to