【问题标题】:call sql procedure from java从java调用sql过程
【发布时间】:2014-12-08 07:56:05
【问题描述】:

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

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

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

有什么想法吗??

【问题讨论】:

  • 您使用的是什么 DBMS?甲骨文?

标签: java mysql sql playframework ebean


【解决方案1】:

Ebean.execute(cs); 之后试试这个Integer returnValue = (Integer) cs.getObject(1); 并在此处发布它提供了什么?

更新 :对您的代码进行以下更改

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();  
}  

【讨论】:

  • 我做到了。但同样的事情没有数据被复制。
  • 它返回数字 13 。这是应该在表中插入的行数。但是桌子是空的!
【解决方案2】:

试试这个:

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

该代码适用于 Oracle,也应该适用于 MySQL。原理是一样的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-28
    • 1970-01-01
    • 2013-01-17
    • 2015-03-09
    • 2017-09-07
    相关资源
    最近更新 更多