程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase綜合文章 >> Jsp調用Sybase數據庫存儲過程返回記錄集

Jsp調用Sybase數據庫存儲過程返回記錄集

編輯:SyBase綜合文章

Sybase數據庫存儲過程我們經常會用到,下面就為您介紹JSP調用Sybase數據庫存儲過程返回記錄集的方法,希望對您學習使用Sybase數據庫存儲過程方面能有所幫助。

源代碼如下:

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

-----------------------------------------------------存儲過程如下:

  1. CREATE PROCEDURE GetDataByPage   
  2. (   
  3.      --創建一個分頁讀取過程   
  4. @SqlStr          varchar(8000), --SQL語句   
  5. @PageSize        int,    --每頁記錄數   
  6. @CurrentPage     int     --當前頁數   
  7. )   
  8. AS   
  9. DECLARE @FirstRec int, @LastRec int, @dt varchar(10) --頁起始行,頁結束行,生成臨時表的隨機數   
  10. BEGIN   
  11.  
  12. SELECT @FirstRec = (@CurrentPage - 1) * @PageSize --計算頁起始行   
  13. SELECT @LastRec = (@CurrentPage * @PageSize + 1) --計算頁結束行   
  14.     
  15. SELECT @dtsubstring(convert(varchar,rand()),3,10) --一個字符型的隨機數   
  16.  

--將搜索結果放入臨時表中,表名隨機生成,在' FROM '前插入'INTO '+隨機臨時表名 

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


--為臨時表增加id號 

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


--計算臨時表中的記錄數 

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


--選取記錄號在起始行和結束行中間的記錄 

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


--刪除臨時表

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

----------------------------------------------------另外寫了個取記錄數的存儲過程:

  1. CREATE PROCEDURE xdztest.GetDataCount  
  2. (  
  3.      @SqlStr varchar(8000)  
  4. )  
  5. AS  
  6. BEGIN  
  7. EXECUTE (@SqlStr)  
  8. END  
  9.    
  10.  
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved