database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 3566 게시물 읽기
No. 3566
exec sp_executesql 질문입니다
작성자
권용재(amadeusj)
작성일
2007-06-12 10:23ⓒ
2007-06-12 10:42ⓜ
조회수
3,367

게임 서버를 만들고 있습니다IDC 의 로그DB 에 데이타를 사내의 로컬 DB 데이타를 가져오려합니다
IDC 의 테이블은 그냥 TestTable 이라면 로컬 DB 의 테이블명은 분기별로 구분을 하려합니다 (TestTable_2007_1 : 2007년 1분기 테이블)
그래서 IDC 의 중복되지 않는 년, 월 의 데이타를 커서에 넣어서 처리를 하려합니다
그런다음에 커서의 데이타를 몇분기인지 구해서 해당되는 분기테이블을 만들고(없을경우에만)
해당 분기테이블에 데이타를 백업해오려합니다
근데 루프안에서 테이블명(해당 분기)을 구해서 그 테이블에 데이타를 넣으려 하니 에러가 나더군요
insert into @VARTEMPLOCALTABLENAME <== 이부분
다른 여러가지 방법을 써봐도 안됩니다...
혹시 다른 방법이 없을까요?
(10분마다 호출되는 SP 이므로 속도는 크게 상관없습니다)

그리고 이 렇게 외부의 DB의 데이타를 처리할떄 분산 트랜젝션을 사용하는건가요?

(분산 트랜젝션을 하려니까 에러가 나서 이리저리 검색해보니 여러가지 설정을 해야하던데요)


-- 해당데이타의 모든 년, 달을 구해서 커서에 넣은다음에 커서에서 데이타를 백업해온다음에 IDC 의 데이타는 삭제한다
-- 테이타중에 틀린 달 이 있을때마다 루프를 돌므로 많은 부하가 가지않는다
set @VARSQL = N'
declare @VARYEAR int
declare @VARMONTH int
declare @VARQUARTER int
declare @VARTEMPLOCALTABLENAME nvarchar(256)
declare tempCursor CURSOR FOR select distinct Year(logDate) as year, Month(logDate) as month from TestTable
open tempCursor
FETCH NEXT FROM tempCursor into @VARYEAR, @VARMONTH
WHILE @@FETCH_STATUS = 0
 BEGIN
  -- spCreateTable 를 호출하여 해당 테이블을 생성한다 , 해당 테이블이 없을때만 (분기별로 생성)
  if @VARMONTH >= 1 and @VARMONTH <= 3   -- 1분기
   set @VARQUARTER = 1
  else if @VARMONTH >= 4 and @VARMONTH <= 6  -- 2분기
   set @VARQUARTER = 2
  else if @VARMONTH >= 7 and @VARMONTH <= 9  -- 3분기
   set @VARQUARTER = 3
  else if @VARMONTH >= 10 and @VARMONTH <= 12 -- 4분기
   set @VARQUARTER = 4
  declare @VARRESULT int
  exec spCreateTable @VARYEAR, @VARQUARTER

  -- 테이블명 수정 (Local 테이블명, [테이블명_년_분기])
  set @VARTEMPLOCALTABLENAME = ''TestTable'' + ''_'' + convert(nvarchar(40), @VARYEAR) + ''_'' + convert(nvarchar(40), @VARQUARTER)

  -- IDC 의 데이타 로컬로 가져오기
  insert into @VARTEMPLOCALTABLENAME
  select * from TestTable
  and Year(logDate) = @VARYEAR
  and Month(logDate) = @VARMONTH

  FETCH NEXT FROM tempCursor into @VARYEAR, @VARMONTH
 END

CLOSE tempCursor
DEALLOCATE tempCursor
'

exec sp_executesql @VARSQL

[Top]
No.
제목
작성자
작성일
조회
3572DB 서버 성능 향상을 위해 고려하고 있는 사항입니다. 조언 부탁드립니다. [1]
최성
2007-06-18
3348
3571sql2000에서 xml 파일 생성하기 [1]
xml
2007-06-15
2974
3570ms-sql server 2005 설치시 오류 문제 질문드립니다.
바다우주
2007-06-15
2389
3566exec sp_executesql 질문입니다
권용재
2007-06-12
3367
3565LDF파일 파일용량 줄이기. [1]
김민호
2007-06-11
3689
3564tempdb.mdf 파일 크기
초보
2007-06-11
2760
3563문자열을 날자형과 비교하려고 하는데..... [3]
날샛다
2007-06-09
10265
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.054초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다