데이터베이스 개발자 질문과 답변 게시판

데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.

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

그리고 익히 아시다시피들... 중소게임회사는 개발단계에서 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
10617 중복시간을 제외한 시간의 합을 구할수있을까요? [7] 톰슨 2020.07.14 471
10616 SQL 서버 연결 [1] 망태기군 2020.07.13 466
10615 SQL 특정 시간 날짜 Sum 문의 입니다. [1] 핸젤루 2020.07.07 471
10614 쿼리 질문합니다... 병든토끼 2020.07.07 312
10613 db 백업? 이중화? 질문 [2] 하이욧 2020.07.06 404
10612 인덱스를 위한 교재 추천 부탁 드립니다. [2] 대두개발자 2020.06.29 552
10611 2개의 테이블을 union all 로 조회 후 합치고 싶습니다. [2] 초보SQL러 2020.06.25 391
10610 사용자 이(가) 로그인하지 못했습니다. 원인: 명시적으로 지정된 데이터베이스를 열지 못했습니다. 마징고 2020.06.24 423
10609 SP 내부의 트랜젝션 처리 코코 2020.06.22 458
10608 상위 레벨 코드 가져오는 방법 [1] sql바보 2020.06.22 472
10607 mssql 프로지져 관련 문의 드립니다. hoon 2020.06.22 355
10606 대용량 DB 질문 [2] 하이욧 2020.06.22 516
10605 대용량 데이터 삭제 문의 입니다. [1] 인버터 2020.06.20 341
10604 서브쿼리를 이용해서 다수의 매개변수를 받아 update를 진행하고 있습니다... [4] 남중남고군대공대 2020.06.15 471
10603 쿼리 질문입니다. [1] 희망나라 2020.06.12 445
10602 조건에 따라 Sum값을 - 로 표시하고 싶습니다. [1] hsp-user 2020.06.10 357
10601 데이터베이스 컬럼에 관한 질문입니다 [2] 병든토끼 2020.06.04 412
» 스토어드 프로시저 내에서 동적쿼리, 동적쿼리 내에서 스토어드 프로시저? [4] 남중남고군대공대 2020.06.03 465
10599 DataBase 병합 방법 안돼요 2020.06.02 345
10598 쿼리문이 오래 걸리는 이유 [1] 풍란올 2020.06.01 566





XE Login