当前位置:服务支持 >  软件文章 >  Jsp调用Sybase存储过程返回记录集 开发实战教程

Jsp调用Sybase存储过程返回记录集 开发实战教程

阅读数 10
点赞 0
article_banner

Sybase数据库存储过程我们经常会用到,下面就为您介绍Jsp调用Sybase数据库存储过程返回记录集的方法,希望对您学习使用Sybase数据库存储过程方面能有所帮助。

源代码如下:

<%@page contentType="text/html;charset=GB2312"%> 
<%@page import="javax.naming.*"%> 
<%@page import="javax.sql.*"%> 
<%@page import="java.sql.*"%> 
<%  
   int n = 20;  
   Connection conn = null;  
   CallableStatement stmt = null;  
   ResultSet rs = null;  
   Context ctx = null;  
   try {  
     ctx = new InitialContext();  
   //获取连接池对象  
     DataSource ds = (DataSource) ctx.lookup("JNDITEST_150");//JNDITEST_150是weblogic数据源的名字  
   //String strSql_p="GetDataByPage @SqlStr=\"select * from bzlist\", @PageSize=20, @CurrentPage=1";  
   String sproc="{?=call GetDataByPage(?,?,?)}";  
     conn = ds.getConnection();  
     stmt=conn.prepareCall(sproc);  
     stmt.setString(2,"select * from bzlist");  
     stmt.setInt(3,20);  
     stmt.setInt(4,1);   
     rs=stmt.executeQuery();   
      out.print("<Table border=1><tr><th>分类号<th>标准编号<th>标准名称<th>文件路径</tr>");  
       while(rs.next()){  
         out.print("<tr><td>" + rs.getString("flh") + "</td>");  
         out.print("<td>" + rs.getString("bzbh") + "</td>");  
         out.print("<td>" + rs.getString("bzmc") + "</td>");  
         out.print("<td>" + rs.getString("path") + rs.getString("filenames") + rs.getString("ext") + "</td></tr>");  
       }  
     out.print("</table>");  
     rs.close();  
     stmt.close();  
     conn.close();  
   }  
   catch (Exception e) {  
     System.out.println("错误如下:<br>" + e);  
     e.printStackTrace();  
   }  
%> 
 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.

-----------------------------------------------------存储过程如下:

CREATE PROCEDURE GetDataByPage   
(   
     --创建一个分页读取过程   
@SqlStr          varchar(8000), --SQL语句   
@PageSize        int,    --每页记录数   
@CurrentPage     int     --当前页数   
)   
AS   
DECLARE @FirstRec int, @LastRec int, @dt varchar(10) --页起始行,页结束行,生成临时表的随机数   
BEGIN   
 
SELECT @FirstRec = (@CurrentPage - 1) * @PageSize --计算页起始行   
SELECT @LastRec = (@CurrentPage * @PageSize + 1) --计算页结束行   
    
SELECT @dtsubstring(convert(varchar,rand()),3,10) --一个字符型的随机数   
 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.

--将搜索结果放入临时表中,表名随机生成,在' FROM '前插入'INTO '+随机临时表名 

SELECT @SqlStr = stuff(@SqlStr, charindex(' FROM ',upper(@SqlStr)), 6 ,' INTO tempdb..Paging'+@dt+' FROM ')   
EXECUTE (@SqlStr)   
  • 1.
  • 2.

 
--为临时表增加id号 

SELECT @SqlStr = 'ALTER TABLE tempdb..Paging'+@dt+' ADD TEMPDB_ID numeric(10) IDENTITY PRIMARY KEY'   
EXECUTE (@SqlStr)   
  • 1.
  • 2.

 
--计算临时表中的记录数 

--SELECT @SqlStr = 'SELECT Count(*) From tempdb..Paging'+@dt   
--EXECUTE (@SqlStr)   
  • 1.
  • 2.

 
--选取记录号在起始行和结束行中间的记录 

SELECT @SqlStr = 'SELECT * FROM tempdb..Paging'+@dt+' WHERE TEMPDB_ID > '+convert(varchar,@FirstRec)+' and TEMPDB_ID < '+convert(varchar,@LastRec)   
EXECUTE (@SqlStr)   
  • 1.
  • 2.

 
--删除临时表

SELECT @SqlStr = 'DROP TABLE tempdb..Paging'+@dt   
EXECUTE (@SqlStr)    
     
END  
  • 1.
  • 2.
  • 3.
  • 4.

----------------------------------------------------另外写了个取记录数的存储过程:

CREATE PROCEDURE xdztest.GetDataCount  
(  
     @SqlStr varchar(8000)  
)  
AS  
BEGIN  
EXECUTE (@SqlStr)  
END  
   
 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.

 

 

 


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删
相关文章
QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空