1使用不帶參數的存儲過程
1
{call procedure-name}
作為實例,在 SQL Server 2005 AdventureWorks 示例數據庫中創建以下存儲過程:
CREATE PROCEDURE GetContactFormalNames
AS BEGIN SELECT TOP 10 Title + ' ' + FirstName + ' ' + LastName AS FormalName
FROM Person.Contact END
此存儲過程返回單個結果集,其中包含一列數據(由 Person.Contact 表中前十個聯系人的稱呼、名稱和姓氏組成)。
在下面的實例中,將向此函數傳遞 AdventureWorks 示例tb數據庫的打開連接,然后使用 executeQuery 方法調用 GetContactFormalNames 存儲過程。
public static void executeSprocNoParams(Connection con)
…{
try …{
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("{call dbo.GetContactFormalNames}");
while (rs.next())
…{
System.out.println(rs.getString("FormalName"));
}
rs.close();
stmt.close();
}
catch (Exception e)
…{
e.printStackTrace();
}
}
2使用帶有輸入參數的存儲過程
使用 JDBC 驅動程序調用帶參數的存儲過程時,必須結合 SQLServerConnection 類的 prepareCall 方法使用 call SQL 轉義序列。帶有 IN 參數的 call 轉義序列的語法如下所示:
{call procedure-name[([parameter][,[parameter]]…)]}http://jie.baijiale.94ibc.com
構造 call 轉義序列時,請使用 ?(問號)字符來指定 IN 參數。此字符充當要傳遞給該存儲過程的參數值的占位符。可以使用 SQLServerPreparedStatement 類的 setter 方法之一為參數指定值。可使用的 setter 方法由 IN 參數的數據類型決定。
向 setter 方法傳遞值時,不僅需要指定要在參數中使用的實際值,還必須指定參數在存儲過程中的序數位置。例如,如果存儲過程包含單個 IN 參數,則其序數值為 1.如果存儲過程包含兩個參數,則第一個序數值為 1,第二個序數值為 2.
作為如何調用包含 IN 參數的存儲過程的實例,使用 SQL Server 2005 AdventureWorks 示例數據庫中的 uspGetEmployeeManagers 存儲過程。此存儲過程接受名為 EmployeeID 的單個輸入參數