Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Uložená procedura SQL Serveru, kterou můžete volat, je jedna, která obsahuje jeden nebo více parametrů IN, což jsou parametry, které lze použít k předávání dat do uložené procedury. Ovladač Microsoft JDBC pro SQL Server poskytuje SQLServerPreparedStatement třídy, kterou můžete použít k volání tohoto typu uložené procedury a ke zpracování dat, která vrací.
Při volání uložené procedury pomocí ovladače JDBC s parametry IN musíte použít call řídicí sekvenci SQL spolu s metodou prepareCall třídy SQLServerConnection. Syntaxe únikové sekvence call s parametry IN je následující:
{call procedure-name[([parameter][,[parameter]]...)]}
Poznámka:
Další informace o SQL escape sekvencích naleznete v dokumentu Použití SQL escape sekvencí.
Při vytváření call escape sekvence zadejte parametry IN pomocí znaku ? (Otazník) znak. Tento znak slouží jako zástupný symbol pro hodnoty parametrů, které se předají do uložené procedury. Chcete-li zadat hodnotu parametru, můžete použít jednu z metod setter sqlServerPreparedStatement třídy. Metoda setter, kterou můžete použít, je určena datovým typem parametru IN.
Když předáte hodnotu metodě setter, musíte zadat nejen skutečnou hodnotu, která se použije v parametru, ale také pořadové umístění parametru v uložené proceduře. Pokud například uložená procedura obsahuje jeden parametr IN, jeho pořadová hodnota bude 1. Pokud uložená procedura obsahuje dva parametry, první pořadová hodnota bude 1 a druhá pořadová hodnota bude 2.
Jako příklad volání uložené procedury, která obsahuje parametr IN, použijte uspGetEmployeeManagers uloženou proceduru v ukázkové databázi AdventureWorks2025. Tato uložená procedura přijímá jeden vstupní parametr s názvem EmployeeID, což je celočíselná hodnota, a vrátí rekurzivní seznam zaměstnanců a jejich manažerů na základě zadaného ID zaměstnance. Kód Java pro volání této uložené procedury je následující:
public static void executeSprocInParams(Connection con) throws SQLException {
try(PreparedStatement pstmt = con.prepareStatement("{call dbo.uspGetEmployeeManagers(?)}"); ) {
pstmt.setInt(1, 50);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
System.out.println("EMPLOYEE:");
System.out.println(rs.getString("LastName") + ", " + rs.getString("FirstName"));
System.out.println("MANAGER:");
System.out.println(rs.getString("ManagerLastName") + ", " + rs.getString("ManagerFirstName"));
System.out.println();
}
}
}