DJ메탈짱™의 Free Style

[MS-SQL] ExecuteNonQuery 실행시 항상 -1 Return #NOCOUNT 본문

일(job)/DBMS

[MS-SQL] ExecuteNonQuery 실행시 항상 -1 Return #NOCOUNT

뽀&쏭 2016. 1. 14. 16:32



- 프로시저 생성 -

CREATE PROCEDURE [dbo].[PROTOTYPE_PROCEDURE_BHCHOI]
(
       @SOURCECOMPANY NVARCHAR(100) = NULL
)
AS

-- 이 옵션은 세션에 있는 모든 명령문에 대해 영향 받은 행의 수에 대한 메시지를 요청하는 클라이언트로 다시 보내지 않도록 막습니다.


SET NOCOUNT ON

 

 -- 신규정보 추가
 INSERT INTO _PROTOTYPE ( SOURCECOMPANY ) VALUES ( @SOURCECOMPANY )  
 set @RETURNKEY = IDENT_CURRENT('_PROTOTYPE')


SET NOCOUNT    OFF

- C# 코드 -

Data Access Application Block 을 활용하여 아래와 같이 코딩하여 테스트 진행.

 

SqlParameter[] arParms = new SqlParameter[2];

// @SOURCECOMPANY Input Parameter
arParms[0] = new SqlParameter("@SOURCECOMPANY", SqlDbType.NVarChar, 100);
arParms[0].Value = txtCompany.Text;

 

...중간 생략...

 

// Execute the stored procedure (프로시저 실행 부분)
rlt = bizObj.ExecuteNonQuery("PROTOTYPE_PROCEDURE_BHCHOI", arParms);

 

- 결과값 반환 -

rlt 값이 항상 -1을 반환하여 성공/실패 체크를 통해 로직을 구현할 수가 없는 상황이 발생.

 

- 해결 방안 -

프로시저 생성시 SET NOCOUNT 옵션으로 인해서 ExecuteNonQuery의 Return Value가 항상 -1을 반환하였던 것임. 옵션을 제거하니 더이상 -1을 반환하지 않았음.