一个简单的例子,环境mssqlserer 2000import java.sql.*;public class TestProcedure {
final String DBDRIVER = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
final String DBURL = "jdbc:sqlserver://localhost:1433;DatabaseName=test";
final String USERNAME = "test";
final String USERPASSWORD = "password";

public TestProcedure(){
try {
Class.forName(DBDRIVER);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}

/*
 * 创建测试的procedure
 * 
 * create proc prTest 
 * @a int, 
 * @b int, 
 * @sum int output 
 * as 
 * set @sum = @a + @b
 * 
 */
public void showSum(int a,int b){
Connection conn = null;
CallableStatement cstmt = null;
String sql = "{call prTest(?,?,?)}";
int sum = 0;
try {
conn = DriverManager.getConnection(DBURL,USERNAME,USERPASSWORD);
cstmt = conn.prepareCall(sql);
// 依次专递参数到procedure
cstmt.setInt(1, a);
cstmt.setInt(2, b);
cstmt.setInt(3, sum);
cstmt.registerOutParameter(3, Types.INTEGER); // out或者inout参数一定要注册之
cstmt.executeUpdate();
sum = cstmt.getInt(3); // 获取返回值
System.out.println("sum = " + sum);

}catch (SQLException e) {
e.printStackTrace();
}finally{
if(cstmt != null){
try{
cstmt.close();
}catch(SQLException e){
e.printStackTrace();
}
}

if(conn != null){
try{
conn.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
}

public static void main(String[] args){
new TestProcedure().showSum(3, 10);
}
}