2014-12-08 2 views
1

Я хочу вызвать сохраненную процедуру sql из java с помощью ebean. я использую этот код:вызов sql-процедуры из java

String sql = "call copy_lov_Countries(?)"; 
CallableSql cs = Ebean.createCallableSql(sql); 
cs.registerOut(1, Types.INTEGER); 
Ebean.execute(cs); 

Достигает процедуру, но он не работает правильно. он никогда не копирует никаких данных!

любая идея ??

+0

Что СУБД вы используете? Oracle? –

ответ

0

Попробуйте это:

String sql = "{CALL copy_lov_Countries(:param)"; 
CallableStatement statement = connection.prepareCall(sql); 
statement.registerOutParameter("param", Types.INTEGER); 
statement.execute(); 
connection.commit(); 

код работает с Oracle, должен также работать с MySQL. Принцип тот же.

0

Попробуйте Integer returnValue = (Integer) cs.getObject(1); после Ebean.execute(cs); И опубликуйте его здесь Что он дает?

Update : Сделайте follwing изменения в свой код

Ebean.beginTransaction(); 
try { 
String sql = "call copy_lov_Countries(?)"; 
CallableSql cs = Ebean.createCallableSql(sql); 
cs.registerOut(1, Types.INTEGER); 
Ebean.execute(cs); 

} finally { 
    Ebean.endTransaction(); 
} 
+0

я сделал. но то же самое не копируются никакие данные. – user3687679

+0

возвращает номер 13. который представляет собой количество строк, которые должны быть вставлены в таблицу. однако таблица пуста !! – user3687679