2011-10-17 4 views
18

테이블에 값을 삽입하기 위해 저장 프로 시저를 사용하고 있습니다.ExecuteNonQuery()는 항상 -1을 반환합니다.

CREATE PROCEDURE [dbo].[Sp_InsertValue] 
@Val1 as nvarchar(50) 
@Val2 as nvarchar(50) 
as 
BEGIN 
    IF NOT EXISTS(SELECT * FROM @mytable WHERE [email protected]) 
    INSERT INTO @mytable VALUES(@VAL2) 
END 

C#을 사용하여 ASP.NET에서이 저장 프로 시저를 호출하려면 ExecuteNonQuery()를 사용하고 있습니다. 그것은 잘 작동, 아무 문제, 그것은 값이 존재하지 않는 경우 삽입합니다. 문제는 cmd.ExecuteNonQuery()가 항상 -1을 반환한다는 것입니다. 레코드가 삽입되면 1을 반환하고 그렇지 않으면 0을 반환합니다.

+0

SQL Server 쿼리 창에서이 절차를 실행하면 결과 창에서 업데이트 된 모든 레코드를 볼 수 있습니까? 또한 마지막 행에 프로 시저를 추가하여 영향을받는 행을 리턴하십시오. @@ Rowcount를 리턴하십시오. – Lingaraj

답변

36

저장 프로 시저에 "SET NOCOUNT ON"이 설정되어 있지 않은지 확인하십시오. 이렇게하면 영향을받는 행 수가 반환됩니다. 문자 그대로 'NoCount'가 켜져 있습니다.

기본 응답은이 상황에서 항상 '-1'입니다.

관련 문제