안녕하세요. 게임 회사 다니는 서버 프로그래머입니다.

그리고 익히 아시다시피들... 중소게임회사는 개발단계에서 DBA를 잘 고용하지 않아여...

물론... 게임 DB가 그리 복잡하지 않을 순 있지만...

c종류만 나름 열심히 했던 저에게 큰 시련이네요...


서론이 길었습니다.


게임에서 우편 구현중입니다.

첨부물품 모두 받기를 제작중이죠. 우편함 내 모든 우편들의 첨부물품 싹다 받는겁니다.

하나의 우편에서 첨부물품 받기는 완성했습죠


그럼 그걸 반복하면 되는거 아닌가요? 라고 할 수도 있지만

성능 떨어지니 원쿼리로 해결보라 하십니다...


그래서 메일 리스트를 스토어드 프로시저에 전달해서

리스트를 분해해서 스토어드 프로시저 내부(첨부물품 모두받기 sp)에서

스토어드 프로시저(우편하나 첨부물품 받기)를 호출 시키려고 합니다..


사실 경험이 없던지라 동적 쿼리 처럼 사용하면 되지 않을까 했는데 열심히 캐치 잡아 내내요...

이게 가능한지 여부나 알고 싶어서 ㅠㅠ


정통 dba님들의 가르침 기다리겠습니다


아래는 소스입니다.


CREATE PROCEDURE [dbo].[spMailUnpackAttachAll]

@CharUID bigint,

@MailUIDList nvarchar(3000)

AS

BEGIN TRY

BEGIN TRAN

DECLARE @ProcessFlag tinyint

DECLARE @RecvCharUID bigint

DECLARE @INPUTMAILUID bigint

DECLARE @UIDTOTALCOUNT int

DECLARE @UIDCURRENTCOUNT int

DECLARE @strQuery nvarchar(256)


DECLARE @TmpMailList table

(

MailCOUNT int IDENTITY(0,1),

MailUIDs bigint

)

DECLARE @OrderID varchar(10), @Pos int


SET @MailUIDList = LTRIM(RTRIM(@MailUIDList))+ ','


SET @Pos = CHARINDEX(',', @MailUIDList, 1)


IF REPLACE(@MailUIDList, ',', '') <> ''

BEGIN

WHILE @Pos > 0

BEGIN

SET @OrderID = LTRIM(RTRIM(LEFT(@MailUIDList, @Pos - 1)))

IF @OrderID <> ''

BEGIN

INSERT INTO @TmpMailList (MailUIDs) VALUES (CAST(@OrderID AS bigint)) --Use Appropriate conversion

END

SET @MailUIDList = RIGHT(@MailUIDList, LEN(@MailUIDList) - @Pos)

SET @Pos = CHARINDEX(',', @MailUIDList, 1)

END

END

SET @UIDCURRENTCOUNT = 0

SELECT @UIDTOTALCOUNT = COUNT(MailCOUNT) FROM @TmpMailList


WHILE (@UIDCURRENTCOUNT <= @UIDTOTALCOUNT)

BEGIN

SET @INPUTMAILUID = (SELECT MailUIDs FROM @TmpMailList where MailCOUNT = @UIDCURRENTCOUNT) 

SET @strQuery = 'exec spMailUnpackAttach ' --요기서 문제.

SET @strQuery += Cast(@INPUTMAILUID AS nvarchar)

EXECUTE sp_executesql @strQuery

END

COMMIT TRAN

return 0

END TRY



BEGIN CATCH

IF @@TRANCOUNT > 0

ROLLBACK TRAN;

return  100

END CATCH


No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 36189
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 18743
10603 쿼리 질문입니다. [1] 희망나라 2020.06.12 553
10602 조건에 따라 Sum값을 - 로 표시하고 싶습니다. [1] hsp-user 2020.06.10 500
10601 데이터베이스 컬럼에 관한 질문입니다 [2] 병든토끼 2020.06.04 521
» 스토어드 프로시저 내에서 동적쿼리, 동적쿼리 내에서 스토어드 프로시저? [4] 남중남고군대공대 2020.06.03 607
10599 DataBase 병합 방법 안돼요 2020.06.02 484
10598 쿼리문이 오래 걸리는 이유 [1] 풍란올 2020.06.01 902
10597 SQL SERVER 2008 R2 STAND 버전에서의 감사 관련 질문입니다. 김삐씨 2020.05.28 462
10596 sql 질문입니다. 테이블 보고 문제 만들기 markiscapable 2020.05.28 462
10595 각 제품의 카테고리별로 가격이 비싼 제품을 알려고합니다. markiscapable 2020.05.28 415
10594 중첩 JOIN문 질문드립니다. [1] smyoon 2020.05.26 601
10593 SQL2005 -> SQL2016 마이그레이션 관련 질문 오희택 2020.05.25 487
10592 SP 실행중 lock이 발생하는데 SSMS에서 발생했다고 나오는데 모르겠습니다. 나노큐브 2020.05.25 496
10591 SQL BIND 변수 질문입니다. [1] 마이노키 2020.05.24 460
10590 무한카테고리 설계와 제품등록 [5] 다자녀아빠 2020.05.22 786
10589 SQL 서버 트렌젝션 로그와 서버의 성능 상관 관계의 문의 [1] lyn1216 2020.05.21 414
10588 SQL 서버 user cal 수와 접근 컨넥션의 관계 질문드립니다. [1] lyn1216 2020.05.21 433
10587 SQL 초보입니다 살려주세요 [1] 마이노키 2020.05.21 474
10586 datepart 로 연도별 월 카운트를 하려고합니다 [1] zkdkdktm 2020.05.20 542
10585 다국어 버전 DB 질문 [2] 장어 2020.05.12 908
10584 SELECT 와 SP를 사용했을떄 속도 차이가 큰가요? [2] 마에스트로 2020.05.08 679





XE Login