一、Java怎样实现对存储过程的调用:
  A:不带输出?数的
create procedure getsum
@n int =0<--此处为?数-->
as
declare @sum int<--定义变量-->
declare @i int
set @sum=0
set @i=0
while @i<=@n begin
set @sum=@sum+@i
set @i=@i+1
end
print 'the sum is '+ltrim(rtrim(str(@sum)))
  在SQL中运行:
  exec getsum 100
  在JAVA中调用:
  JAVA能够调用 可是在JAVA程序却不能去显示该存储过程的结果 由于上面的存储过程的?数类型int 传递方式是in(按值)方式
import java.sql.*;
public class ProcedureTest
{
public static void main(String args[]) throws Exception
{
//载入驱动
DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
//获得连接
Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa","");
//创建存储过程的对象
CallableStatement c=conn.prepareCall("{call getsum(?)}");
//给存储过程的?数设置值
c.setInt(1,100); //将第一个?数的值设置成100
//运行存储过程
c.execute();
conn.close();
}
}
  B:带输出?数的
  1:返回int
alter procedure getsum
@n int =0,
@result int output
as
declare @sum int
declare @i int
set @sum=0
set @i=0
while @i<=@n begin
set @sum=@sum+@i
set @i=@i+1
end
set @result=@sum