求教 Java 中如何执行 Oracle 中定义的过程

[复制链接]
查看11 | 回复9 | 2007-10-20 08:38:44 | 显示全部楼层 |阅读模式
求教 Java 中如何执行 Oracle 中定义的过程
谢谢
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
try{
Connection con=ConDb.getConDb();
CallableStatement cstm=con.prepareCall("{call ins_cat(?)}&quot

;
cstm.setString(1,catName);
cstm.execute();
con.close();
cstm.close();
}catch(Exception e){
e.printStackTrace();
}

eg.call ...
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
最初由 lvbomr 发布
[B]try{
Connection con=ConDb.getConDb();
CallableStatement cstm=con.prepareCall("{call ins_cat(?)}&quot

;
cstm.setString(1,catName);
cstm.execute();
con.close();
cstm.close();
}catch(Exception e){
e.printStackTrace();
}

eg.call ... [/B]

谢谢,试试行不
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
小的也是来学习的
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
最初由 lvbomr 发布
[B]try{
Connection con=ConDb.getConDb();
CallableStatement cstm=con.prepareCall("{call ins_cat(?)}&quot

;
cstm.setString(1,catName);
cstm.execute();
con.close();
cstm.close();
}catch(Exception e){
e.printStackTrace();
}

eg.call ... [/B]

能给个详细点的例子看看吗?
ConDb.getConDb();这类和方法都你定义的吧?
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
返回值怎么获取??
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
没办法,不用过程实现了
课程设计也检查了
不过经过这个课程设计发现自己其实还有很多很不会
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
最初由 hanjs 发布
[B]返回值怎么获取?? [/B]

有返回值的应该用函数吧?
这次课程设计我就在 Oracle 里定义了好几个函数
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
/*
* Title:地税核心征管系统--税费管理
* Copyright: (C) 2003-2004 地方税务局,技股份有限公司,版权所有.
* Company: 股份有限公司
*/
package com.ttsoft.bjtax.sfgl.sydj.fdcdj.fdcsycx.processor;
import com.ttsoft.framework.processor.Processor;
import com.ttsoft.framework.util.VOPackage;
import com.ttsoft.bjtax.sfgl.sydj.fdcdj.fdcsycx.web.WebConstantKey;
import com.ttsoft.framework.exception.BaseException;
import java.util.List;
import java.util.ArrayList;
import com.ttsoft.bjtax.sfgl.sydj.fdcdj.fdcsycx.web.FdcsycxActionForm;
import java.sql.Connection;
import com.ttsoft.bjtax.sfgl.common.db.util.SfDBUtils;
import com.ttsoft.bjtax.sfgl.common.db.util.SfDBResource;
import com.ttsoft.bjtax.sfgl.sydj.fdcdj.util.FdcDao;
import com.ttsoft.framework.exception.ApplicationException;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.ttsoft.bjtax.sfgl.sydj.fdcdj.fdcsycx.processor.helper.ProcessHelper;
import java.sql.CallableStatement;
import oracle.jdbc.OracleTypes;
import com.ttsoft.bjtax.sfgl.sydj.fdcdj.fdcsycx.util.FdcsycxUtil;
import com.ttsoft.bjtax.sfgl.sydj.fdcdj.fdcsycx.processor.helper.GlebeInfo;
import com.ttsoft.bjtax.sfgl.sydj.fdcdj.util.CodeTableUtil;
/**
* Title: 地税核心征管系统--税费管理
* Description: 房地产税源登记情况查询 FdcsycxProcessor
* @author
* @version 1.0
*/
public class FdcsycxProcessor
implements Processor {
public FdcsycxProcessor() {
}
/**
* processor数据处理
* @param vo @see com.ttsoft.framework.util.VOPackage 数据操作参数
* @return Object 查询结果
* @throws BaseException 抛出应用异常
*/
public Object process(VOPackage vo) throws
BaseException {
if ( vo == null ) {

throw new NullPointerException();
}
switch (vo.getAction()) {

// 房地产税源登记情况查询

case WebConstantKey.QUERY_REG_STATE:

return doQueryDJQKCX(vo);

// 房地产税源变更登记-政策性减免情况查询

case WebConstantKey.QUERY_DERATE:

return doQueryJMQKCX(vo);

// 房地产税源登记情况统计查询

case WebConstantKey.QUERY_REG_STAT:

return doQueryDJQKTJCX(vo);

// 房地产税源变更登记-政策性减免情况统计查询

case WebConstantKey.QUERY_DERATE_STAT:

return doQueryJMQKTJCX(vo);

default:

throw new UnsupportedOperationException(

"Method process() not yet implemented.&quot

;
}
}
/**
* 执行房地产税源登记情况查询
* @param vo @see com.ttsoft.framework.util.VOPackage 数据操作参数
* @return Object 查询结果
* @throws BaseException 抛出应用异常
*/
public Object doQueryDJQKCX(VOPackage vo) throws
BaseException {
CallableStatement cstemt = null;
Fdcsycx fBean = (Fdcsycx) vo.getData();
Connection conn = null;
SfDBUtils sfDB = null;
ResultSet rs = null;
List dataList = new ArrayList();
// 总的记录数
int row = 0;
// 每页要显示的记录数
int pr = fBean.getPaginalRecord();
try {

conn = SfDBResource.getConnection();

cstemt = conn.prepareCall(

"{call SFDB.PRO_SFGL_FDCSYZCXDJMX(?,?,?,?,?,?,?,?,?,?,?)}&quot

;

// 纳税人的计算机代码

cstemt.setString(1, fBean.getJsjdm());

// 纳税人的纳税人名称

cstemt.setString(2, fBean.getNsrmc());

// 查询条件税务机关组织机构代码

if ( !FdcsycxUtil.isNull(fBean.getZgsws()) ) {

cstemt.setString(3, fBean.getZgsws());

} else {

cstemt.setString(3, fBean.getQxfj());

}

// 查询条件,表示登记或变更:1是登记,2是变更

cstemt.setString(4, fBean.getCxlx());

// 查询条件,变更类型

cstemt.setString(5, fBean.getBglx());

// 查询条件,查询开始日期

cstemt.setString(6, fBean.getSydjsjdq());

// 查询条件,查询结束日期

cstemt.setString(7, fBean.getSydjsjdz());

// 查询条件,税源登记状态

cstemt.setString(8, fBean.getSydjzt());

// 查询条件,查询开始的rownum

cstemt.setString(9, String.valueOf(fBean.getPageNum() * pr - (pr - 1)));

// 查询条件,查询结束的rownum

cstemt.setString(10, String.valueOf(fBean.getPageNum() * pr));

cstemt.registerOutParameter(11, OracleTypes.CURSOR);

//执行存储过程

cstemt.execute();

//获取查询结果

rs = (ResultSet) cstemt.getObject(11);

while ( rs.next() ) {

Sydjqkcx s = new Sydjqkcx();

// 总记录数

row = rs.getInt("ZJLS&quot

;

// 计算机代码

s.setJsjdm(rs.getString("JSJDM&quot

);

// 区县分局

s.setQxfj(rs.getString("QXFJ&quot

);

// 纳税人名称

s.setNsrmc(rs.getString("NSRMC&quot

);

// 主管税务所

s.setZgsws(rs.getString("ZGSWS&quot

);

// 应税房产原值总额

s.setYsfcyzze(rs.getString("FCYZ11&quot

);

// 税务机关估值总额

s.setSwjggjze(rs.getString("FCGZ12&quot

);

// 法定免税房产原值总额

s.setFdmsfcyzze(rs.getString("FCYZ21&quot

);

// 年应纳房产税(城市房地产税)税额

s.setNynfcsze(rs.getString("NYNFCS"));

// 年应纳城镇土地使用税税额

s.setNyncztdsysse(rs.getString("NYNTDS"));

// 本年度应纳房产税(城市房地产税)税额

s.setBndynfcsse(rs.getString("BNDFCS"));

// 本年度应纳城镇土地使用税税额

s.setBndyncztdsysse(rs.getString("BNDTDS"));

// 一级土地应税面积

s.setTdysmj1(rs.getString("JG11"));

// 二级土地应税面积

s.setTdysmj2(rs.getString("JG12"));

// 三级土地应税面积

s.setTdysmj3(rs.getString("JG13"));

// 四级土地应税面积

s.setTdysmj4(rs.getString("JG14"));

// 五级土地应税面积

s.setTdysmj5(rs.getString("JG15"));

// 六级土地应税面积

s.setTdysmj6(rs.getString("JG16"));

// 一级土地法定减免面积

s.setTdfdjmmj1(rs.getString("JG21"));

// 二级土地法定减免面积

s.setTdfdjmmj2(rs.getString("JG22"));

// 三级土地法定减免面积

s.setTdfdjmmj3(rs.getString("JG23"));

// 四级土地法定减免面积

s.setTdfdjmmj4(rs.getString("JG24"));

// 五级土地法定减免面积

s.setTdfdjmmj5(rs.getString("JG25"));

// 六级土地法定减免面积

s.setTdfdjmmj6(rs.getString("JG26"));

// 一级土地面积合计

s.setTdhjmj1(rs.getString("JG31"));

// 二级土地面积合计

s.setTdhjmj2(rs.getString("JG32"));

// 三级土地面积合计

s.setTdhjmj3(rs.getString("JG33"));

// 四级土地面积合计

s.setTdhjmj4(rs.getString("JG34"));

// 五级土地面积合计

s.setTdhjmj5(rs.getString("JG35"));

// 六级土地面积合计

s.setTdhjmj6(rs.getString("JG36"));

// 计算应税土地面积合计

s.setTdysmjhj(

ProcessHelper.countTdmj(

s.getTdysmj1()

, s.getTdysmj2()

, s.getTdysmj3()

, s.getTdysmj4()

, s.getTdysmj5()

, s.getTdysmj6()));

// 计算法定减免土地面结合计

s.setTdjmmjhj(

ProcessHelper.countTdmj(

s.getTdfdjmmj1()

, s.getTdfdjmmj2()

, s.getTdfdjmmj3()

, s.getTdfdjmmj4()

, s.getTdfdjmmj5()

, s.getTdfdjmmj6()));

// 计算土地面积总计

s.setTdmjhj(

ProcessHelper.countTdmj(s.getTdysmjhj(), s.getTdjmmjhj()));

// 计算房产原值总额

s.setFcyzze(

ProcessHelper.countTdmj(s.getYsfcyzze(), s.getFdmsfcyzze()));

dataList.add(s);

}
}
catch (SQLException ex) {

ex.printStackTrace();

throw new ApplicationException("房地产税源登记情况查询错误!"

+ ex.getMessage());
}
catch (Exception ex) {

throw new ApplicationException("房地产税源登记情况查询错误!");
}
finally {

SfDBResource.freeConnection(conn);

try {

if (cstemt != null) {

cstemt.close();

}

if (rs != null) {

rs.close();

}

}

catch (Exception ex) {}
}
FdcscxBO fb = new FdcscxBO();
fb.setFdccxList(dataList);
fb.setRow(row);
return fb;
}
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
建议查询jdk的connection接口的prepareCall方法。和oracle关系不大吧,是java的知识,呵呵。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行