日期:2014-05-19  浏览次数:20615 次

jsp调用sql server 2000存储过程的问题。
我现在写了个存储过程:
CREATE PROCEDURE spWWWClear
  @YearMonth varchar(8) --费用年月

 AS
declare @Ynum int,@Wnum int

if isnull(@YearMonth,'')=''
  set @YearMonth=cast(year(getdate())*100+month(getdate()) as varchar(8))

select isnull(clTotal1,0)+isnull(clTotal2,0)+isnull(clTotal3,0) as Total,isnull(clTotal1,0) clTotal1,isnull(clTotal2,0) clTotal2,isnull(clTotal3,0) clTotal3 into #temp1 from ClearRate where clYearMonth=cast(@YearMonth as int) and clPayed=0 

select isnull(clTotal1,0)+isnull(clTotal2,0)+isnull(clTotal3,0) as Total,isnull(clTotal1,0) clTotal1,isnull(clTotal2,0) clTotal2,isnull(clTotal3,0) clTotal3 into #temp2 from ClearRate where clYearMonth=cast(@YearMonth as int) and clPayed=1 

select @Ynum=count(*)from #temp1
select @Wnum=count(*)from #temp2

select '未收' as 状态,@Ynum 户数,sum(clTotal1) 费用一,sum(clTotal2) as 费用二,sum(clTotal3) as 其他费,sum(Total) as 总金额 from #temp1
union all
select '已收' as 状态, @Wnum 户数,sum(clTotal1) 费用一,sum(clTotal2) as 费用二,sum(clTotal3)as 其他费,sum(Total) as 总金额 from #temp2
GO


我想在jsp中调用这个存储过程,该怎么调用呢?

想在jsp中显示下面的内容:
状态 户数 费用一 费用二 其他费 总金额
未收 5190 527930.2000 731029.0000 .0000 1258959.2000
已收 1413 96211.2000 149832.0000 .0000 246043.2000

------解决方案--------------------
用 jdbc 像执行 select 语句一样直接该存储过程,反正它返回的也是 记录集

CallableStatement cmt= conn.prepareCall("{call spWWWClear (?) }");
cmt.setString(1,YearMonth);//输入
ResultSet rs= cmt.executeQuery();
String str= cmt.getString(0);//获取输出值

------解决方案--------------------
帮顶
------解决方案--------------------
学习下,初学jsp~
------解决方案--------------------
学习 顶
------解决方案--------------------
关注学习!
------解决方案--------------------
帮顶,没用过sqlserver........
------解决方案--------------------
很少用到CallableStatement 用PreparedStatement用的比较多
学习了帮顶下
------解决方案--------------------
关注 帮顶
------解决方案--------------------
帮顶
------解决方案--------------------
调用存储过程,也就只有用CallableStatement 
你说的那1,2,3,4,5,6 那几个就是代表你的输出参数,你在过程里面定义了6个
你在查询分析器里面执行
exec spWWWClear 日期

看看显示结果是什么样的? 如果是
状态 户数 费用一 费用二 其他费 总金额
未收 5190 527930.2000 731029.0000 .0000 1258959.2000
已收 1413 96211.2000 149832.0000 .0000 246043.2000

这样的记录?
那就不用输出参数,用结果集来接收,然后显示。

------解决方案--------------------
调用代码:

Java code

       public ResultSet getData(String queryString) {
        ResultSet rs = null;
        try {
            cst = conn.prepareCall(queryString);

            cst.executeQuery();
            return rs = cst.getResultSet();
        } catch (Exception ex) {
            System.out.print("调用存储过程时发生错误!:" + ex.toString());
            return rs;
        }
    }

------解决方案--------------------
关注 学习
------解决方案--------------------
不懂存储过程。
------解决方案--------------------
探讨
调用代码: