Utilizzo di una stored procedure con parametri di input

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 per Microsoft SQL Server 2005 fornisce la classe SQLServerPreparedStatement che è possibile utilizzare per chiamare questo tipo di stored procedure ed elaborare i dati restituiti.

Quando si chiama una stored procedure utilizzando il driver JDBC con parametri IN, è necessario utilizzare 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 ulteriori informazioni sulle sequenze di escape SQL, vedere Utilizzo delle sequenze di escape SQL.

Quando si costruisce la sequenza di escape call, specificare i parametri IN utilizzando 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 utilizzare uno dei metodi Set 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. Ad esempio, se la stored procedure contiene un unico parametro IN, il 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, utilizzare la stored procedure uspGetEmployeeManagers nel database di esempio AdventureWorks di SQL Server 2005. Questa stored procedure accetta un singolo parametro di input denominato EmployeeID, ovvero un valore integer, e restituisce un elenco ricorsivo di dipendenti e manager in base al valore EmployeeID specificato. Il codice Java per la chiamata a questa stored procedure è il seguente:

public static void executeSprocInParams(Connection con) {
   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();
      }
      rs.close();
      pstmt.close();
   }

   catch (Exception e) {
      e.printStackTrace();
    }
}

Vedere anche

Altre risorse

Utilizzo delle istruzioni con le stored procedure