java+sql server+CallableStatement调用存储过程三种情况

本文演示了如何使用JSP页面调用SQL Server 2000的存储过程,并展示了三种不同类型的存储过程调用示例:无参数并返回结果集、带参数并返回值、带参数并返回结果集。

在JSP页面中进行测试,代码如下:

<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
    
<body>
        
<%
                    Class.forName(
"com.microsoft.jdbc.sqlserver.SQLServerDriver")
                    .newInstance();
            String url 
= "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
            
//pubs为你的数据库的
            String user = "sa";
            String password 
= "";
            Connection conn 
= DriverManager.getConnection(url, user, password);
            
//不带参数的存储过程,并且返回结果集
            CallableStatement stmt = conn.prepareCall("{call ghy_proc}");
            stmt.execute();
            ResultSet rs 
= stmt.getResultSet();
            
while (rs.next()) {
                out.println(rs.getString(
1));
            }

            out.println(
"<br>");

            
//带参数的存储过程,并且返回值
            stmt = conn.prepareCall("{call ghy_proc_return(?,?)}");
            stmt.registerOutParameter(
1, Types.INTEGER);
            stmt.registerOutParameter(
2, Types.INTEGER);
            stmt.setInt(
110);
            stmt.setInt(
210);
            stmt.execute();
            out.println(
"加1的值是:" + stmt.getString(1+ "<br>");
            out.println(
"减1的值是:" + stmt.getString(2+ "<br>");

            
//带参数的存储过程,并且返回结果集
            stmt = conn.prepareCall("{call ghy_proc_var(?)}");
            stmt.setInt(
114);
            stmt.execute();
            rs 
= stmt.getResultSet();
            
while (rs.next()) {
                out.println(
"job_id value is:" + rs.getString(1+ "<br>");
                out.println(
"job_desc value is:" + rs.getString(2+ "<br>");
            }

        
%>
    
</body>
</html>


三个SQL Server 2000存储过程如下:

CREATE PROCEDURE ghy_proc 
AS 
select * from jobs
GO

 

CREATE PROCEDURE ghy_proc_return (@max int output,@min int output)
AS 
select @max=@max+1
select @min=@min-1
GO

 

CREATE PROCEDURE ghy_proc_var  (@id int)
AS
select * from jobs where job_id=@id
GO


告诉自己:标准SQL语法和概念很重要,以后要强化这些。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值