存储过程: -- call MyProc( ? , ? , ? )alter proc MyProc(@id int , @customerid nchar( 5 ) output, @employeeid int output)asbegin select @customerid = customerid,@employeeid = employeeid from orders where orderid = @idendgodeclare@cu char ( 5 ),@em int exec MyProc 10248 ,@cu output,@em outputprint(cast(@em as char ( 5 )) + @cu)以下是java调用存储过程: import java.sql. * ; public class Study ... { private Connection con; public ResultSet re; private CallableStatement callsta; private String str; private String use="sa"; private String pwd="sa"; public Study() ...{ try...{ //连接数据库驱动 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); String str="jdbc:microsoft:sqlserver://localhost:1433;databasename=northwind"; con=DriverManager.getConnection(str,use,pwd); //设置存储过程参数 String st="{call MyProc(?,?,?)}"; callsta=con.prepareCall(st); callsta.setInt(1,10248); callsta.registerOutParameter(2,Types.VARCHAR); callsta.registerOutParameter(3,Types.INTEGER); //测试调用执行成功与否 System.out.println(callsta.execute()); //循环输出调用存储过程的记录结果 if(callsta.execute()==true) ...{ re=callsta.getResultSet(); while(re.next()) ...{ System.out.println(re.getInt(1)+" "+re.getString(2)+" "+re.getInt(3)); } } else...{System.out.println("dfas");} } catch(Exception e)...{e.printStackTrace();} } public static void main(String[] age) ...{ Study study=new Study(); }}