Usar un procedimiento almacenado con parámetros de entrada

Un SQL Server procedimiento almacenado al que se puede llamar es aquel que contiene uno o más parámetros IN, parámetros que se pueden usar para pasar datos al procedimiento almacenado. El controlador JDBC de Microsoft SQL Server 2005 ofrece la clase SQLServerPreparedStatement, que puede usar para llamar a este tipo de procedimiento almacenado y procesar los datos que devuelve.

Si usa el controlador JDBC para llamar a un procedimiento almacenado con los parámetros IN, debe usar la secuencia de escape de SQL call junto con el método prepareCall de la clase SQLServerConnection. La sintaxis de la secuencia de escape call con los parámetros IN es la siguiente:

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

Nota

Para obtener más información sobre las secuencias de escape de SQL, consulte Usar secuencias de escape SQL.

Al crear la secuencia de escape call, especifique los parámetros IN mediante el carácter ? (signo de interrogación). Este carácter actúa como un marcador de posición para los valores de parámetros pasados al procedimiento almacenado. Para especificar un valor de un parámetro, puede usar uno de los métodos de establecimiento de la clase SQLServerPreparedStatement. El método de establecimiento que puede usar se determina mediante el tipo del parámetro IN.

Cuando pasa un valor al método establecedor, debe especificar no sólo el valor real que se usará en el parámetro, sino el lugar ordinal que ocupa el parámetro en el procedimiento almacenado. Por ejemplo, si su procedimiento almacenado contiene un solo parámetro IN, su valor ordinal será 1. Si el procedimiento almacenado contiene dos parámetros, el primer valor ordinal será 1 y el segundo 2.

Como ejemplo de cómo llamar a un procedimiento que contiene un parámetro IN, use el procedimiento almacenado uspGetEmployeeManagers de la base de datos de ejemplo AdventureWorks de SQL Server 2005. Este procedimiento almacenado acepta un solo parámetro de entrada llamado EmployeeID (Id. del empleado), que es un valor entero, y devuelve una lista recursiva de empleados y sus jefes según el EmployeeID especificado. El código Java para llamar a este procedimiento almacenado es el siguiente:

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

Vea también

Otros recursos

Usar instrucciones con procedimientos almacenados