Uso di una stored procedure con parametri di input

Scaricare il driver JDBC

Una stored procedure di SQL Server che è possibile chiamare è una procedura contenente uno o più parametri IN, ovvero i parametri utilizzabili per passare i dati alla stored procedure. Il driver JDBC Microsoft per SQL Server fornisce la classe SQLServerPreparedStatement che è possibile usare per chiamare questo tipo di stored procedure ed elaborare i dati restituiti.

Quando si chiama una stored procedure usando il driver JDBC con parametri IN, è necessario usare la sequenza di escape SQL call insieme al metodo prepareCall della classe SQLServerConnection. La sintassi della sequenza di escape call con parametri IN è la seguente:

{call procedure-name[([parameter][,[parameter]]...)]}

Nota

Per altre informazioni sulle sequenze di escape SQL, vedere Uso delle sequenze di escape SQL.

Quando si costruisce la sequenza di escape call, specificare i parametri IN usando il carattere ? (punto interrogativo), che funge da segnaposto per i valori di parametro che verranno passati alla stored procedure. Per specificare un valore per un parametro, è possibile usare uno dei metodi setter della classe SQLServerPreparedStatement. Il metodo Set che è possibile utilizzare è determinato dal tipo di dati del parametro IN.

Quando si passa un valore al metodo Set, è necessario specificare non solo il valore effettivo da utilizzare nel parametro, ma anche la posizione ordinale del parametro nella stored procedure. Se, ad esempio, la stored procedure contiene un solo parametro IN, il relativo valore ordinale sarà 1. Se la stored procedure contiene due parametri, il primo valore ordinale sarà 1 e il secondo sarà 2.

Per un esempio sulla modalità di chiamata a una stored procedure che contiene un parametro IN, usare la stored procedure uspGetEmployeeManagers nel database di esempio AdventureWorks2019. Questa stored procedure accetta un singolo parametro di input denominato EmployeeID, ovvero un valore integer, e restituisce un elenco ricorsivo di dipendenti e responsabili in base al valore EmployeeID specificato. Il codice Java per la chiamata a questa stored procedure è il seguente:

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

Vedi anche

Uso delle istruzioni con le stored procedure