預存程序:
--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();
}
}