I can't get a procedure to execute. It's in the database, and the code is in 
the classpath. But it doesn't get called. I'm probably overlooking something 
simple. I'm using Spring/Hibernate/Atomikos in a Java console app; Derby is an 
embedded database used in file mode as a temp database for the app. I want to 
create a single base temp schema with the tables. Then I want to create 
multiple, empty, temp schemas. Then I call the procedure, createTempSchema, 
passing a schema name as argument. The proc then creates the tables in the temp 
schema using "as select * from ... with no data". There are 1200 tables in the 
base temp schema, and as many temp schemas as we decide we need for 
simultaneous connections. For now I'm testing with a single table and 2 temp 
schemas, as well as the base temp schema. 

The following SQL is successfully executed by Spring as part of creating the 
embedded database. The method for the procedure implements the Spring interface 
ApplicationContextAware so I can get the data source bean from Spring and get a 
connection on it. The setter for the AppCtx is duly called by Spring. The 
"createTempSchema" method underlying the procedure is not called. I assume I 
can issue create table stmts in a procedure. 

Anyway here is the SQL. The database is populated as I expect, with  
vanguardtemp and temp00 and 01, and vgtemp has the table. Thanks for any advice.

/*
  create temp ORM schemas 
*/
create procedure createTempSchema (in schemaName char(254))
  language java parameter style java modifies sql data
  external name 
'com.kve.vanguard.model.orm.dao.TempSchemaGenerator.createTempSchema';

create schema vanguardtemp;
set schema=vanguardtemp;
create table DBAPREP (
  APAZCD char(5) primary key,
  ...
);
create schema temp00;
create schema temp01;
call app.createTempSchema('temp00');
call app.createTempSchema('temp01');




Reply via email to