Usar un procedimiento almacenado con un recuento de actualizaciones

Para modificar los datos de una base de datos de SQL Server con un procedimiento almacenado, el controlador JDBC de Microsoft SQL Server proporciona la clase SQLServerCallableStatement. Con la clase SQLServerCallableStatement puede llamar a los procedimientos almacenados que modifican los datos contenidos en la base de datos y devuelven un recuento del número de filas afectadas, lo que se denomina recuento de actualizaciones.

Una vez configurado el procedimiento almacenado con la clase SQLServerCallableStatement, puede llamar al procedimiento almacenado con el método execute o executeUpdate. El método executeUpdate devolverá un valor int que contiene el número de filas afectadas por el procedimiento almacenado, mientras que el método execute no lo hace. Si usa el método execute y desea obtener el recuento del número de filas afectadas, puede llamar al método getUpdateCount después de ejecutar el procedimiento almacenado.

Nota

Si desea que el controlador JDBC devuelva todos los recuentos de actualizaciones, incluidos los recuentos de actualizaciones devueltos por todos los desencadenadores activados, establezca la propiedad de cadena de conexión lastUpdateCount en "false". Para obtener más información sobre la propiedad lastUpdateCount, consulte Establecer las propiedades de conexión.

A modo de ejemplo, cree la tabla y el procedimiento almacenado siguientes, e inserte también los datos de ejemplo, en la base de datos de ejemplo AdventureWorks de SQL Server 2005:

CREATE TABLE TestTable 
   (Col1 int IDENTITY, 
    Col2 varchar(50), 
    Col3 int);

CREATE PROCEDURE UpdateTestTable
   @Col2 varchar(50),
   @Col3 int
AS
BEGIN
   UPDATE TestTable
   SET Col2 = @Col2, Col3 = @Col3
END;
INSERT INTO dbo.TestTable (Col2, Col3) VALUES ('b', 10);

En el siguiente ejemplo, se pasa una conexión abierta a la base de datos de ejemplo AdventureWorks a la función, se usa el método execute para llamar al procedimiento almacenado UpdateTestTable y, a continuación, se usa el método getUpdateCount para devolver un recuento de las filas afectadas por el procedimiento almacenado.

public static void executeUpdateStoredProcedure(Connection con) {
   try {
      CallableStatement cstmt = con.prepareCall("{call dbo.UpdateTestTable(?, ?)}");
      cstmt.setString(1, "A");
      cstmt.setInt(2, 100);
      cstmt.execute();
      int count = cstmt.getUpdateCount();
      cstmt.close();

      System.out.println("ROWS AFFECTED: " + count);
   }
   catch (Exception e) {
      e.printStackTrace();
   }
}

Vea también

Otros recursos

Usar instrucciones con procedimientos almacenados