返回int
-------------------------带输出参数的----------------
 1 alter procedure getsum
alter procedure getsum
 2 @n int =0,
@n int =0,
 3 @result int output
@result int output
 4 as
as
 5 declare @sum int
declare @sum int
 6 declare @i int
declare @i int
 7 set @sum=0
set @sum=0
 8 set @i=0
set @i=0
 9 while @i<=@n begin
while @i<=@n begin
10 set @sum=@sum+@i
set @sum=@sum+@i
11 set @i=@i+1
set @i=@i+1
12 end
end
13 set @result=@sum
set @result=@sum 
-------------------在查询分析器中执行------------
1 declare @myResult int
declare @myResult int
2 exec getsum 100,@myResult output
exec getsum 100,@myResult output
3 print @myResult
print @myResult 
--------------在Java中调用--------------------
 1 import java.sql.*;
import java.sql.*;
 2
 3
 public class ProcedureTest
public class ProcedureTest  {
{
 4
 public static void main(String args[]) throws Exception
    public static void main(String args[]) throws Exception  {
{
 5 //加载驱动
        //加载驱动
 6 DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
        DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
 7 //获得连接
        //获得连接
 8 Connection conn = DriverManager.getConnection("jdbc:odbc:mydata", "sa",
        Connection conn = DriverManager.getConnection("jdbc:odbc:mydata", "sa",
 9 "");
                "");
10 //创建存储过程的对象
        //创建存储过程的对象
11 CallableStatement c = conn.prepareCall("{call getsum(?,?)}");
        CallableStatement c = conn.prepareCall("{call getsum(?,?)}");
12 //给存储过程的第一个参数设置值
        //给存储过程的第一个参数设置值
13 c.setInt(1, 100);
        c.setInt(1, 100);
14 //注册存储过程的第二个参数
        //注册存储过程的第二个参数
15 c.registerOutParameter(2, java.sql.Types.INTEGER);
        c.registerOutParameter(2, java.sql.Types.INTEGER);
16 //执行存储过程
        //执行存储过程
17 c.execute();
        c.execute();
18 //得到存储过程的输出参数值
        //得到存储过程的输出参数值
19 System.out.println(c.getInt(2));
        System.out.println(c.getInt(2));
20 conn.close();
        conn.close();
21 }
    }
22 }
} 
返回varchar
----------------存储过程带游标----------------
 1 ---在存储过程中带游标   使用游标不停的遍历orderid
---在存储过程中带游标   使用游标不停的遍历orderid
 2 create procedure CursorIntoProcedure
create procedure CursorIntoProcedure
 3 @pname varchar(8000) output
@pname varchar(8000) output
 4 as
as
 5 --定义游标
--定义游标
 6 declare cur cursor for select orderid from orders
declare cur cursor for select orderid from orders
 7 --定义一个变量来接收游标的值
--定义一个变量来接收游标的值
 8 declare @v varchar(5)
declare @v varchar(5)
 9 --打开游标
--打开游标
10 open cur
open cur
11 set @pname=''--给@pname初值
set @pname=''--给@pname初值
12 --提取游标的值
--提取游标的值
13 fetch next from cur into @v
fetch next from cur into @v
14 while @@fetch_status=0
while @@fetch_status=0
15 begin
  begin
16 set @pname=@pname+';'+@v
set @pname=@pname+';'+@v
17 fetch next from cur into @v
  fetch next from cur into @v
18 end
end
19 print @pname
print @pname
20 --关闭游标
--关闭游标
21 close cur
close cur
22 --销毁游标
--销毁游标
23 deallocate cur
deallocate cur 
------------执行存储过程--------------
1 exec CursorIntoProcedure ''
exec CursorIntoProcedure '' 
--------------在Java中调用--------------------
 1 import java.sql.*;
import java.sql.*;
 2
 3
 public class ProcedureTest
public class ProcedureTest  {
{
 4
 public static void main(String args[]) throws Exception
    public static void main(String args[]) throws Exception  {
{
 5 // 加载驱动
        // 加载驱动
 6 DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
        DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
 7 // 获得连接
        // 获得连接
 8 Connection conn = DriverManager.getConnection("jdbc:odbc:mydata", "sa",
        Connection conn = DriverManager.getConnection("jdbc:odbc:mydata", "sa",
 9 "");
                "");
10 CallableStatement c = conn.prepareCall("{call CursorIntoProcedure(?)}");
        CallableStatement c = conn.prepareCall("{call CursorIntoProcedure(?)}");
11 c.registerOutParameter(1, java.sql.Types.VARCHAR);
        c.registerOutParameter(1, java.sql.Types.VARCHAR);
12 c.execute();
        c.execute();
13 System.out.println(c.getString(1));
        System.out.println(c.getString(1));
14 conn.close();
        conn.close();
15 }
    }
16 }
} 
	posted on 2009-01-26 11:28 
飞翔天使 阅读(1469) 
评论(0)  编辑  收藏  所属分类: 
java