복붙노트

[SQL] 어떻게 저장 프로 시저에 의해 영향을받는 레코드 수를 얻을 수 있나요?

SQL

어떻게 저장 프로 시저에 의해 영향을받는 레코드 수를 얻을 수 있나요?

INSERT, UPDATE 및 데이터베이스에 대해 직접 실행 DELETE SQL 문의 경우, 대부분의 데이터베이스 제공 업체는 영향을받는 행의 수를 반환합니다. 저장 프로 시저의 경우, 영향을받는 레코드 수는 항상 -1입니다.

우리는 어떻게 저장 프로 시저에 의해 영향을받는 레코드 수를받을 수 있나요?

해결법

  1. ==============================

    1.저장 프로 시저에 대한 출력 매개 변수를 등록하고, SQL 서버를 사용하는 경우 @@ ROWCOUNT에 따라 값을 설정합니다. 사용의 SQL %의 ROWCOUNT Oracle을 사용하는 경우.

    저장 프로 시저에 대한 출력 매개 변수를 등록하고, SQL 서버를 사용하는 경우 @@ ROWCOUNT에 따라 값을 설정합니다. 사용의 SQL %의 ROWCOUNT Oracle을 사용하는 경우.

    마음이 각 작업에 대한 @@ ROWCOUNT에서 결과를 저장하기 위해 여러 INSERT / UPDATE / DELETE, 당신이 필요합니다 변수가있는 경우.

  2. ==============================

    2.@@ 행 개수 당신에게 SQL 문에 의해 영향을받는 레코드 수를 줄 것이다.

    @@ 행 개수 당신에게 SQL 문에 의해 영향을받는 레코드 수를 줄 것이다.

    즉시 나중에 그것을 실행하는 경우 @@ 행 개수에만 작동합니다. 당신이 오류를 트래핑하는 경우 그래서, 당신은 같은 줄에 그것을 할 수 있습니다. 당신이 그것을 분할하는 경우, 당신은 둘 중 하나는 두 번째 넣어 놓치지 않습니다.

    SELECT @NumRowsChanged = @@ROWCOUNT, @ErrorCode = @@ERROR
    

    여러 개의 문이있는 경우 각각에 대해 영향을받는 행의 수를 캡처하고 그들을 추가해야합니다.

    SELECT @NumRowsChanged = @NumRowsChanged  + @@ROWCOUNT, @ErrorCode = @@ERROR
    
  3. ==============================

    3.SET NOCOUNT ON이와 SqlCommand.ExecuteNonQuery () (SQL Server 관리 Studio에서 기본적으로) 저장 프로 시저 스크립트에서 설정 한 것을 나에게 밝혀; 항상 반환 -1.

    SET NOCOUNT ON이와 SqlCommand.ExecuteNonQuery () (SQL Server 관리 Studio에서 기본적으로) 저장 프로 시저 스크립트에서 설정 한 것을 나에게 밝혀; 항상 반환 -1.

    @@ ROWCOUNT를 사용하지 않고도 SET NOCOUNT OFF : 난 그냥 오프로 설정합니다.

    자세한 내용은 여기 : SqlCommand.ExecuteNonQuery () -1을 반환 삽입 / 업데이트를 수행 할 때 / 삭제

  4. ==============================

    4.Microsoft SQL Server의 저장 프로 시저의 마지막 문에 의해 영향을받는 행의 수를 반환하는 @@ ROWCOUNT 변수를 반환 할 수 있습니다.

    Microsoft SQL Server의 저장 프로 시저의 마지막 문에 의해 영향을받는 행의 수를 반환하는 @@ ROWCOUNT 변수를 반환 할 수 있습니다.

  5. ==============================

    5.@@ ROWCOUNT

    @@ ROWCOUNT

  6. ==============================

    6.경고 : @@ 테이블이 변경되는 경우 ROWCOUNT 가짜 데이터를 반환 할 수는 연결된 트리거가!

    경고 : @@ 테이블이 변경되는 경우 ROWCOUNT 가짜 데이터를 반환 할 수는 연결된 트리거가!

    @@의 ROWCOUNT는 트리거가 아닌 실제 문에 의해 영향을받는 레코드 수를 반환합니다!

  7. from https://stackoverflow.com/questions/1201358/how-can-i-get-the-number-of-records-affected-by-a-stored-procedure by cc-by-sa and MIT license