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();
}
}


你可能感兴趣的:(java,sql,存储过程,数据库,sqlsever)