首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

jsp调用sql server 2000存储过程的有关问题

2012-09-07 
jsp调用sql server 2000存储过程的问题。我现在写了个存储过程:CREATE PROCEDURE spWWWClear@YearMonth var

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中显示下面的内容:
状态 户数 费用一 费用二 其他费 总金额
未收 5190527930.2000731029.0000.00001258959.2000
已收 141396211.2000149832.0000.0000246043.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;        }    }
[解决办法]
关注 学习
[解决办法]
不懂存储过程。
[解决办法]
探讨
调用代码:




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;


[解决办法]
在JSP页面上用for循环,或则用标签显示。 调用存储过程,得到结果集。
List list = new ArrayList();
用while(rs.next){
Module m = new Module();
m.setMm( rs.getString("名称"));
list.add(m);
}


页面
<%
 List list = request.getSession().getAttribute("list");
 for(Iterator it=list.iterator();it.hasNext();){
Module m = (Module)it.next;
%>
${m.mm}
<%
}
%>

<c:foreach item="><c:foreach>
[解决办法]
学习中....
是不是回帖就给加分?没分了,不能下载资料
[解决办法]
学习。。。
[解决办法]
Connection conn = DatabaseConnection.getConnection(); // 获得数据库连接 
CallableStatement proc =conn.prepareCall("{(?,?,?,?,?,?)=call spNewbumf(?)}");//调用存储过程 
proc.registerOutParameter(1,Types.INTEGER);//传出参数 
proc.registerOutParameter(2,Types.INTEGER); 
proc.registerOutParameter(3,Types.INTEGER); 
proc.registerOutParameter(4,Types.INTEGER); 
proc.registerOutParameter(5,Types.INTEGER); 
proc.registerOutParameter(6,Types.INTEGER); 
proc.setString(7,YearMonth); 
//传入参数 
proc.execute();//执行 


1、2、3、4、5、6、7代表conn.prepareCall("{(?,?,?,?,?,?)=call spNewbumf(?)}");里面的第几个?
想在jsp中显示的话首先你要将得到的结果集封装成一个个对应的对象成为一个list,然后放在request中,在jsp 中可以通过struts标签或el表达式得到。
[解决办法]
我也想知道用JSP如何操作sql中各种语句...
[解决办法]
建议楼主去它的官方网站上看看....
[解决办法]
帮顶!
[解决办法]
探讨
学习中....
是不是回帖就给加分?没分了,不能下载资料

[解决办法]
存储过程在jsp中没试过
帮顶
[解决办法]
我觉得两个点。
1.怎么样将结果集拿出来。这里不管是放到哪儿显示,不重要。关键就是将数据拿出来。
并成功的封装成一个集合。
2.页面显示,显示只要你在作用域中已经将 第一步的集合传过去了,还怕不能显示吗
[解决办法]
帮顶~~~~~~~~~~~
[解决办法]
学习中了,
[解决办法]
探讨
Connection conn = DatabaseConnection.getConnection(); // 获得数据库连接
CallableStatement proc =conn.prepareCall("{(?,?,?,?,?,?)=call spNewbumf(?)}");//调用存储过程
proc.registerOutParameter(1,Types.INTEGER);//传出参数
proc.registerOutParameter(2,Types.INTEGER);
proc.registerOutParameter(3,Types.INTEGER);
proc.registerOutParameter(4,Types.INTEGER);
proc.registerOutParameter(5,Typ…

[解决办法]
探讨
调用代码:




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;

热点排行