Code:
USE [Pangya_S4_TH]
GO
/****** Object: StoredProcedure [dbo].[USP_GUILD_MEMBER_LIST] Script Date: 02/02/2011 02:40:49 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROC [dbo].[USP_GUILD_MEMBER_LIST] (
@UID INT = 0
, @CARD_TYPE TINYINT = 9 -- add : 2009-06-04
, @CARD_TYPEID INT = 0
, @QTY INT = 0
, @TYPES TINYINT = 1
, @OUTPUT INT = -1
, @RESULT INT = 0 OUTPUT
, @OUT_CARD_ITEMID BIGINT = 0 OUTPUT
)
-- -- WITH ENCRYPTION
AS
/*********************************************
카드 추가 대부분 카드팩/개별카드
2009-04-29, GOMI97
2009-06-03, GOMI97
- USP_CARDBOX_USRS 통합
# CARD_TYPE
0 : 캐릭터
1 : 캐디
2 : 스페셜
3 : 팡야카드팩 V1, 골드, 실버, 브론즈
4 : 카드박스
# ERRCODE
0 : 성공
1 : 실패 (SYS ERR)
9 : CARD_TYPE 없음
4 : 요청된 CARD_TYPEID ROWCOUNT 중복
6 : 해당 UID 없음
2 : ERR 횟수가 2 - 비정상적인 케이스임
#USAGE :
DECLARE @CARD_PUSH_ERR INT
EXEC USP_CARD_PUSH_S4 3556218, 2088763599, 1, 'SHOP', @CARD_PUSH_ERR OUTPUT
SELECT @CARD_PUSH_ERR
***********************************************/
BEGIN
SET NOCOUNT ON
DECLARE @CARD_ITEMID BIGINT, @ERR TINYINT, @TOT_QTY INT
SET @ERR = 0
SET @CARD_ITEMID = 0
SET @TOT_QTY = 0
IF EXISTS ( SELECT 1 FROM PANGYA_MEMBER_INFO WHERE UID = @UID ) BEGIN
-- #0. CHECK CARD
SELECT @CARD_ITEMID = CARD_ITEMID, @TOT_QTY = ( QTY + @QTY )
FROM DBO.TD_CARD_USRS
WHERE UID = @UID
AND CARD_TYPEID = @CARD_TYPEID
AND USE_YN = 'Y'
AND QTY > 0
AND END_DT IS NULL
BEGIN TRAN
IF ( @CARD_ITEMID > 0 AND @CARD_TYPE < 4 ) BEGIN
UPDATE DBO.TD_CARD_USRS
SET QTY = @TOT_QTY
, GET_DT = GETDATE()
WHERE UID = @UID
AND CARD_ITEMID = @CARD_ITEMID
SELECT @ERR = CASE WHEN (@@ERROR != 0) THEN @ERR + 1 ELSE 0 END
END ELSE IF ( @CARD_ITEMID = 0 OR @CARD_TYPE >= 4 ) BEGIN
IF ( @CARD_TYPE = 9 ) BEGIN
SELECT @CARD_TYPE = COM0
FROM DBO.PANGYA_ITEM_TYPELIST
WHERE TYPEID = @CARD_TYPEID
AND TYPE = 31
END
IF ( @CARD_TYPE = 9 ) BEGIN
SET @ERR = 9 -- 해당 @CARD_TYPE 없음
END ELSE BEGIN
INSERT INTO DBO.TD_CARD_USRS (UID, CARD_TYPEID, CARD_TYPE, QTY, GET_DT, USE_YN)
SELECT @UID, @CARD_TYPEID, @CARD_TYPE, @QTY, GETDATE(), 'Y'
SELECT @ERR = CASE WHEN (@@ERROR != 0) THEN @ERR + 1 ELSE 0 END, @CARD_ITEMID = SCOPE_IDENTITY(), @TOT_QTY = @QTY
END
END
IF ( @ERR = 0 ) BEGIN
COMMIT TRAN
SELECT @RESULT = @ERR, @OUT_CARD_ITEMID = @CARD_ITEMID
IF ( @OUTPUT <> -1 ) SELECT ERRCODE = @ERR, CARD_ITEMID = @CARD_ITEMID, QTY = @TOT_QTY, ADD_QTY = @QTY
END ELSE BEGIN
ROLLBACK TRAN
SELECT @RESULT = @ERR, @OUT_CARD_ITEMID = @CARD_ITEMID
IF ( @OUTPUT <> -1 ) SELECT ERRCODE = @ERR, CARD_ITEMID = @CARD_ITEMID, QTY = @TOT_QTY, ADD_QTY = 0
END
END ELSE BEGIN
-- PANGYA_UID NOT MATCH
SELECT @ERR = 6
SELECT @RESULT = @ERR, @OUT_CARD_ITEMID = @CARD_ITEMID
IF ( @OUTPUT <> -1 ) SELECT ERRCODE = @ERR, CARD_ITEMID = @CARD_ITEMID, QTY = @TOT_QTY, ADD_QTY = @QTY
END
-- FINAL NEW CARD LOG
INSERT INTO Pangya_S4_TH.DBO.TZ_CARD_LOG (TYPES, ERRCODE, UID, ORI_ITEMID, CARD_ITEMID, CARD_TYPEID, QTY, FINAL_QTY, REGDATE)
SELECT @TYPES, ERRCODE = @ERR, @UID, ORI_CARD_ITEMID = 0, CARD_ITEMID = @CARD_ITEMID, CARD_TYPEID = @CARD_TYPEID,
ADD_QTY = CASE WHEN (@ERR != 0) THEN 0 ELSE @QTY END, QTY = @TOT_QTY, GETDATE()
-- FINAL NEW CARD LOG
END
I know, the content of the procedure doesn't make any sense, because it's from one of the Card Procedures. But the important thing is that the Procedure the messenger server looks for, exists.