2017-01-04 6 views
1

나는 SQL Server 2008의 저장 프로 시저를 쓰고 난 쿼리에 의해 영향을받는 행을 계산해야합니다.@@ ROWCOUNT의 올바른 유형은 무엇입니까?

DECLARE 
    @my_rows     AS INT 

다음

SELECT * 
FROM a table 
WHERE some conditions 
SET @[email protected]@ROWCOUNT 

제대로 작동 VARCHAR로 내가 my_rows를 선언하는 경우

하지만 INT로 선언하는 경우 나는 다음과 같은 오류 얻을 :

Arithmetic overflow error converting expression to data type tinyint.

올바른 종류가 무엇을 알리다? 나는 행의 수는 정수일 수 있고 0과 행의 총 수 사이에 있다고 생각한다.

+0

나는 아무 문제없이 코드를 테스트했다. 예외 상태로'@ my_rows'를'int'가 아니라'tinyint'로 선언하셨습니까? HarshalY는 그의 대답에 쓴 – Magnus

+1

음,의 데이터 유형은 ['@@ ROWCOUNT'] (https://msdn.microsoft.com/en-us/library/ms187316.aspx는) int''사실이다. 내가 (실제 선택 문) 코드를 시도했습니다 나는 오류 없어. 오류 텍스트는'@ my_rows'를'int' 대신'tinyint'로 선언했음을 시사합니다. 아마도 이것은 문제입니다. –

+0

질문의 코드에서 오류가 발생하지 않습니다. 이 오류가 실제로 실행중인 코드와 일치하는지 확인하십시오. –

답변

2

은 당 MSDN으로 @@ROWCOUNT의 올바른 반환 형식은 int.

SQL 코드가 제대로 심지어 @my_rowstinyint로 선언 작업, 괜찮습니다.

+1

위대한 의견이지만 좋지 않은 대답입니다. 조금 더 두껍게하려고 시도해보십시오. int 값을 int 데이터 유형으로 설정하려고 시도 할 때 OP에서 오류가 발생하는 이유를 설명하려고 시도했을 수 있습니다. –

+0

@@ ROWCOUNT에서 반환 된 값이 tinyint의 최대 값 (255)보다 크지 않으면 @my_rows가 tinyint로 선언 된 경우 제대로 작동합니다. 그렇지 않으면 산술 오버 플로우 오류가 발생합니다. –

+0

@ ZoharPeled 네, 방금 int와 tinyint 사이에서 둘 다 잘 작동한다는 것을 지적했습니다. – HarshalY