Sdílet prostřednictvím


Použití uložené procedury se vstupními parametry

Stáhnout ovladač JDBC

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

Viz také

Použití příkazů s uloženými procedurami