java存储过程调用(sqlsever数据库)
存储过程:
--call MyProc(?,?,?)
alter proc MyProc
(@id int,
@customerid nchar(5) output,
@employeeid int output
)as
begin
select @customerid=customerid,@employeeid=employeeid from orders
where orderid=@id
end
go
declare
@cu char(5),
@em int
exec MyProc 10248,@cu output,@em output
print(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();
}
}