oracle 存储过程入参 出参 java中调用简单案列

论坛 期权论坛 脚本     
匿名技术用户   2020-12-30 06:23   16   0
create or replace procedure testmz(inYear in NUMBER,
                               inmonth in VARCHAR,
                               qtynum out number
                              )
as
begin
  select   b.cfone+b.cftwo+b.cfthree  into  qtynum   from  CT_BI_NORM a  inner join  CT_BI_NORMENTRY b on a.fid=b.fparentid  where  fnumber='00024'and a.cfinyear=inYear   and b.cfinmonth =inmonth   ;
end;

2、java中调用

package com.kingdee.eas.custom.test.app;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Types;

import org.apache.log4j.Logger;

import com.kingdee.bos.BOSException;
import com.kingdee.bos.Context;
import com.kingdee.bos.dao.IObjectValue;
import com.kingdee.bos.framework.ejb.EJBFactory;
import com.kingdee.eas.custom.test.DemoInfo;
import com.kingdee.util.db.SQLUtils;

public class DemoControllerBean extends AbstractDemoControllerBean {
 private static Logger logger = Logger
   .getLogger("com.kingdee.eas.custom.test.app.DemoControllerBean");

 @Override
 protected void _excjob(Context ctx, IObjectValue model) throws BOSException {
  // TODO Auto-generated method stub
  DemoInfo info = (DemoInfo) model;
  String inYear = info.getInYear();
  String inmonth = info.getInMonth();
  Connection conn = null;
  CallableStatement pc = null;
  try {
   conn = EJBFactory.getConnection(ctx);
   pc = conn.prepareCall("{call testmz (?,?,?) }");
   //输入参数1
   pc.setFloat(1,Float.parseFloat(inYear));
   //输入参数2
   pc.setString(2, inmonth);
   //输出参数3
   pc.registerOutParameter(3, Types.FLOAT);
   pc.execute();
   double double1 = pc.getDouble(3);
   System.out.println("计算结果:----------"+double1+"---------------------------");
  } catch (SQLException e) {
   e.printStackTrace();
  } finally {
   SQLUtils.cleanup(pc, conn);
  }

  super._excjob(ctx, model);
 }

}

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP