개인 공부/데이터베이스

[mssql] select문과 @@ROWCOUNT

chaeD2 2023. 4. 20. 15:23

 

일반적으로 select문으로 한 행 이상을 조회했을 때 @@ROWCOUNT는 1 이상이 나온다.

그러나 with nolock 구문으로 데이터 무결성을 무시하고 조회하거나, set nocount on으로 @@ROWCOUNT 값을 0으로 초기화하는 경우 꼭 1 이상이 나온다고 보장할 수 없다.

 

더보기

일반적으로 SELECT 문으로 한 행을 조회했을 때 @@ROWCOUNT 값은 1이 됩니다. 그러나 예외적인 상황에서는 @@ROWCOUNT 값이 0 이하로 나올 수 있습니다.

예를 들어, 다음과 같은 상황에서 @@ROWCOUNT 값은 0이 됩니다:

  • SELECT 문에 WHERE 절에서 조회할 조건이 없는 경우
  • SELECT 문에서 조회할 테이블이 비어있는 경우
  • SELECT 문에서 조회된 행이 이미 삭제되었거나 갱신되어 변경된 경우

또한, 일부 상황에서는 @@ROWCOUNT 값이 0이 될 수도 있습니다. 예를 들어, 다음과 같은 상황에서 @@ROWCOUNT 값은 0이 될 수 있습니다:

  • SELECT 문에서 WITH NOLOCK 힌트를 사용하여 데이터 무결성을 무시하고 조회하는 경우
  • SELECT 문에서 SET NOCOUNT ON 문을 사용하여 @@ROWCOUNT 값을 0으로 초기화하는 경우

따라서, SELECT 문으로 한 행을 조회했을 때 @@ROWCOUNT 값이 0 이하로 나올 수 있으며, 이는 예외적인 상황에서 발생하는 것이므로 주의가 필요합니다. 일반적으로는 @@ROWCOUNT 값이 1 이상이면 결과 집합에 행이 포함되어 있다는 것을 의미하므로, 이를 확인하여 적절한 처리를 수행해야 합니다.