2014-12-08 100 views
1

我想从使用ebean的java调用保存的sql程序。 我使用此代码:从java调用sql程序

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

它到达的过程,但它不运行正确。它从不复制任何数据!

任何想法?

+0

您正在使用什么数据库管理系统?甲骨文? – 2014-12-08 07:57:57

回答

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); 然后在这里发表它给了什么?

更新 :让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 2014-12-08 08:32:46

+0

它返回数字13。这是应在表中插入的行数。然而桌子是空的! – user3687679 2014-12-08 09:04:07