업데이트 횟수가 있는 저장 프로시저 사용
저장 프로시저를 사용하여 SQL Server 데이터베이스의 데이터를 수정하기 위해 SQL Server용 Microsoft JDBC Driver에서는 SQLServerCallableStatement 클래스를 제공합니다. SQLServerCallableStatement 클래스를 사용하여 데이터베이스에 있는 데이터를 수정하고 영향을 받는 행 수(업데이트 수라고도 함)를 반환하는 저장 프로시저를 호출할 수 있습니다.
SQLServerCallableStatement 클래스를 사용하여 저장 프로시저에 대한 호출을 설정한 후 execute 또는 executeUpdate 메서드를 사용하여 저장 프로시저를 호출할 수 있습니다. executeUpdate 메서드는 저장 프로시저의 영향을 받는 행 수를 포함하는 int 값을 반환하지만 execute 메서드는 이 값을 반환하지 않습니다. execute 메서드를 사용하면서 영향을 받는 행 수를 구하려는 경우, 저장 프로시저를 실행한 후 getUpdateCount 메서드를 호출하면 됩니다.
참고 항목
발생했을 수 있는 트리거에서 반환된 업데이트 수를 포함한 모든 업데이트 수가 JDBC 드라이버에서 반환되도록 하려면, lastUpdateCount 연결 문자열 속성을 "false"로 설정합니다. lastUpdateCount 속성에 대한 자세한 내용은 연결 속성 설정을 참조하세요.
이에 대한 예로 AdventureWorks2022 샘플 데이터베이스에 다음 테이블 및 저장 프로시저를 만들고 예제 데이터도 삽입합니다.
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);
다음 예제에서는 AdventureWorks2022 샘플 데이터베이스에 대해 열린 연결을 함수로 전달하고, 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();
System.out.println("ROWS AFFECTED: " + count);
}
// Handle any errors that may have occurred.
catch (SQLException e) {
e.printStackTrace();
}
}