关于存储过程的概念、种类、语法、格式、功能以及优缺点请参考百度百科:
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();
}
}
%>