인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

스토어프로시저 질문

작성

·

204

0

스토어 프로시저 작성중 SELECT문만 썼을때에는 ouput값이 제대로 나오는데
 
if를 사용하여 update 또는 insert를 사용할경우 아웃풋값을 제대로 받아오지 못합니다.
(코드에서 output ret의 벨류를 받아오지못합니다.)
(SELECT만 사용할경우에는 잘받아옴.)
 
 
혹시 어떤 문제가있는지 알 수 있을까요?
 
 

 

ALTER PROCEDURE [dbo].[spLogin]

@accountid text,

@password text,

@ret int OUTPUT

AS 

DECLARE @userIdCount int;

SELECT @userIdCount = COUNT(*) 

FROM [dbo].[Accounts] 

WHERE  account like @accountid;

 

if (@userIdCount = 0)

BEGIN

SELECT @ret = 0;

END

else

BEGIN

DECLARE @LOGIN_OK int = 1;

DECLARE @LOGIN_ID_FAILED int = 2;

DECLARE @LOGIN_LOGGEDIN int = 3;

 

DECLARE @checkCount int;

DECLARE @loggedin tinyint;

SELECT @checkCount = COUNT(*)

FROM [dbo].[Accounts] 

WHERE  account like @accountid AND password like @password;

 

SELECT @loggedin = loggedin

FROM [dbo].[Accounts] 

WHERE  account like @accountid AND password like @password;

 

if (@checkCount > 0)

BEGIN

if (@loggedin > 0)

BEGIN

SELECT @ret = @LOGIN_LOGGEDIN;

END

else

BEGIN

SELECT @ret = @LOGIN_OK;

UPDATE [dbo].[Accounts] SET loggedin = 1 WHERE account like @accountid; --이곳이 실행되면 output값을 코드에서 받지못함.

END

END

else

BEGIN

SELECT @ret = @LOGIN_ID_FAILED;

END

END

RETURN @ret

 

답변 1

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

위 내용만으로는 저도 알 수 없습니다.

예전에 봤던 코드를 복원해서 일부 샘플을 보여드린 것이고 
100% 완전하지 않기 때문에 부족한 기능이 있다면
ODBC + Stored Procedure 연동 문서를 찾으면서
스스로 MSDN이나 구글링을 하면서 채우셔야 합니다.

먼 기억으로는 실제로 SELECT 방식으로만 리턴해줬던 것 같기도 하네요.
(굳이 RET까지 필요하지 않았기 때문)

그렇군요 . 다시한번 시도해보겠습니다.

UPDATE문아래에서 select방식으로 리턴해줘도 받아오지 못하네요... 

ALTER PROCEDURE [dbo].[spLogin]

@accountid text

AS 

UPDATE Accounts  SET loggedin = 1 WHERE account like @accountid;

SELECT account FROM [dbo].[Accounts] WHERE account like @accountid;

RETURN

 

단순하게 바꾸어봐도 update는실행이되지만 select한 값은 받아오지못하네요..

구글링하여 해결하였습니다!

Rookiss님의 프로필 이미지
Rookiss
지식공유자

오오 좋습니다 ㅎㅎ
히스토리 차원에서 해결 방법에 대한 내용들도 남겨주시면 좋겠네요 :)

한개의 스토어프로시저에서 여러개를 사용할때 SQLMoreResults  함수를 사용하여 다음 결과에대한 정보도 받아올수있습니다 :)

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기