Share via


업데이트 횟수가 있는 저장 프로시저 사용

저장 프로시저를 사용하여 SQL Server 데이터베이스의 데이터를 수정하기 위해 Microsoft SQL Server JDBC 드라이버에서는 SQLServerCallableStatement 클래스를 제공합니다. SQLServerCallableStatement 클래스를 사용하면 데이터베이스에 포함된 데이터를 수정하고 영향을 받은 행 수(업데이트 횟수라고도 함)를 반환하는 저장 프로시저를 호출할 수 있습니다.

SQLServerCallableStatement 클래스를 사용하여 저장 프로시저에 대한 호출을 설정한 후에는 execute 또는 executeUpdate 메서드를 사용하여 저장 프로시저를 호출할 수 있습니다. executeUpdate 메서드는 저장 프로시저에 의해 영향을 받은 행 수가 포함된 int 값을 반환하지만 execute 메서드는 그렇지 않습니다. execute 메서드를 사용하여 영향을 받은 행 수를 가져오려면 저장 프로시저를 실행한 후 getUpdateCount 메서드를 호출합니다.

참고

JDBC 드라이버가 발생 가능성이 있는 모든 트리거가 반환한 업데이트 횟수를 포함하여 모든 업데이트 횟수를 반환하게 하려면 lastUpdateCount 연결 문자열 속성을 "false"로 설정합니다. lastUpdateCount 속성에 대한 자세한 내용은 연결 속성 설정을 참조하십시오.

이에 대한 예로 SQL Server 2005 AdventureWorks 샘플 데이터베이스에 다음 테이블 및 저장 프로시저를 만들고 예제 데이터도 삽입합니다.

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

다음 예제에서는 AdventureWorks 샘플 데이터베이스에 대해 열린 연결을 함수로 전달하고, execute 메서드를 사용하여 UpdateTestTable 저장 프로시저를 호출한 다음, getUpdateCount 메서드를 사용하여 저장 프로시저에 의해 영향을 받은 행 수를 반환합니다.

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

참고

관련 자료

저장 프로시저가 있는 문 사용