스토어드 프로시저의 영향을 받는 레코드의 수를 취득하려면 어떻게 해야 합니까?
위해서INSERT
,UPDATE
그리고.DELETE
데이터베이스에 대해 직접 실행되는 SQL 문은 대부분의 데이터베이스 공급자가 영향을 받는 행 수를 반환합니다.스토어드 프로시저의 경우 영향을 받는 레코드 수는 항상-1
.
스토어드 프로시저의 영향을 받는 레코드의 수는 어떻게 얻을 수 있습니까?
저장 프로시저의 out 파라미터를 등록하고 값을 설정합니다.@@ROWCOUNT
SQL Server를 사용하는 경우.사용하다SQL%ROWCOUNT
Oracle을 사용하는 경우.
여러 개를 가지고 있다면INSERT/UPDATE/DELETE
, 결과를 저장할 변수가 필요합니다.@@ROWCOUNT
각 조작에 대해서요.
@@RowCount
SQL 문의 영향을 받는 레코드 수를 나타냅니다.
그@@RowCount
는, 그 직후에 발행했을 경우에만 기능합니다.따라서 오류를 트래핑하는 경우 동일한 라인에서 수행해야 합니다.나누면 두 번째 걸 놓칠 수 있어요.
SELECT @NumRowsChanged = @@ROWCOUNT, @ErrorCode = @@ERROR
여러 개의 문이 있는 경우 각 문마다 영향을 받는 행 수를 캡처하여 합산해야 합니다.
SELECT @NumRowsChanged = @NumRowsChanged + @@ROWCOUNT, @ErrorCode = @@ERROR
알고 보니SET NOCOUNT ON
스토어드 프로시저 스크립트(디폴트로는 SQL Server Management Studio)로 설정되어 있습니다.SqlCommand.ExecuteNonQuery();
항상 -1을 반환했습니다.
방금 울렸어요.SET NOCOUNT OFF
사용할 필요 없이@@ROWCOUNT
.
자세한 내용은 SqlCommand를 참조하십시오.Execute NonQuery 메서드 # 비고
연결에서 SET NOCOUNT ON이 설정되어 있는 경우(명령어 실행 전 또는 명령어 실행으로 시작된 트리거의 일부), 개별 문의 영향을 받는 행은 이 메서드에 의해 반환되는 영향을 받는 행의 수에 영향을 주지 않습니다.
카운트에 관여하는 스테이트먼트가 검출되지 않는 경우는, 반환치는 -1 입니다.롤백이 발생하면 반환값도 -1이 됩니다.
Microsoft SQL Server 의 경우는,@@ROWCOUNT
저장 프로시저에서 마지막 문의 영향을 받는 행 수를 반환합니다.
경고:@@ROWCOUNT
변경 중인 테이블에 트리거가 연결된 경우 가짜 데이터를 반환할 수 있습니다.
그@@ROWCOUNT
는 실제 문이 아닌 트리거의 영향을 받는 레코드 수를 반환합니다.
언급URL : https://stackoverflow.com/questions/1201358/how-can-i-get-the-number-of-records-affected-by-a-stored-procedure
'programing' 카테고리의 다른 글
WooCommerce의 추가 정보 탭에서 제품 특성 숨기기 (0) | 2023.03.11 |
---|---|
스프링 데이터 JPA(스프링 부트 없음) (0) | 2023.03.11 |
json_false()는 false를 반환합니다. (0) | 2023.03.11 |
GCM 오류=JSON을 통해 메시지를 보내는 등록 (0) | 2023.03.11 |
AngularJs: 새로고침 페이지 (0) | 2023.03.11 |