关于存储过程的概念、种类、语法、格式、功能以及优缺点请参考百度百科:
http://baike.baidu.com/view/68525.htm
创建存储过程:sql server 2000
以下例子使用的是jdbc driver2.0
企业管理器-存储过程-创建存储过程
例一:读取数据的存储过程
CREATE PROCEDURE selectInfo As select * from dtree GO
在jsp中调用该存储过程selectInfo方法如下
<% Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance(); String url="jdbc:sqlserver://localhost:1433;DatabaseName=database"; String user="sa"; String password=""; Connection conn= DriverManager.getConnection(url,user,password); CallableStatement cstmt = conn.prepareCall("{call selectInfo}"); //{后面不能有空格 ResultSet rs=cstmt.executeQuery(); while(rs.next()) {%> 您的第一个字段内容为:<%=rs.getString(1)%> <br> 您的第二个字段内容为:<%=rs.getString(2)%> <br> 您的第三个字段内容为:<%=rs.getString(3)%> <br> <%}%> <%out.print("数据库操作成功,恭喜你");%> <%rs.close(); conn.close(); %>
例二:插入数据
存储过程insertInfo
CREATE PROCEDURE insertInfo @param1 char(50),@param2 varchar(50) as insert userlist(username,pwd) Values(@param1,@param2) RETURN 1 GO
jsp中调用insertInfo存储过程
<% Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); String url="jdbc:sqlserver://localhost:1433;databaseName=database;user=sa;password="; String sql = "{?=call insertInfo(?,?)}"; Connection conn = null; CallableStatement cstmt = null; try{ conn= DriverManager.getConnection(url); cstmt = conn.prepareCall(sql); cstmt.registerOutParameter(1,java.sql.Types.INTEGER); cstmt.setString(2,"admin"); cstmt.setString(3,"pwd"); cstmt.execute(); int returnValue = cstmt.getInt(1); if(returnValue == 1) { out.print("<li>添加成功!"); } else { out.print("<li>添加失败!"); } } catch(Exception ex) { out.print(ex.getLocalizedMessage()); } finally { try { if(cstmt != null) { cstmt.close(); cstmt = null; } if(conn != null) { conn.close(); conn = null; } } catch(Exception e) { e.printStackTrace(); } } %>