DECLARE @TB_REP VARCHAR(20) -- CIMPLICITY 에서 로깅한 레포트 기본 데이터 테이블
DECLARE @TB_ACC VARCHAR(20) -- 시간별 적산값들의 차가 저장될 테이블
DECLARE @TB_TEMP VARCHAR(20) -- 적산값들의 차를 구하는 과정에서 생성될 임시 테이블

declare @dt1 datetime
declare @dt2 datetime

declare @sDate1 VARCHAR(20)
declare @sDate2 VARCHAR(20)

SET @TB_REP = 'REP_DAY'
SET @TB_ACC = 'REP_DAY_ACC'
SET @TB_TEMP='REP_DAY_TEMP'


set @dt1 = getdate() - 1
set @dt2 = getdate()

set @sDate1 = convert(char(10),@dt1,120)
set @sDate2 = convert(char(16),@dt2,120)

DECLARE @ColName VARCHAR(40)
DECLARE @sSql VARCHAR(8000)


-- 스크롤로 커서를 생성하면 커서 이동이 자유롭다.
-- 기본 커서는 앞으로 이동밖에 안되지만, 속도가 가장 빠르다고 한다.
DECLARE col_cursor SCROLL CURSOR FOR

-- 커서를 이용해 @ColName 변수에 COLUMN_NAME 값들을 저장한다. (@TB_REP 테이블의 컬럼중 이름에 문자열 ACC, RUNMIN 포함된 컬럼의 이름)
SELECT COLUMN_NAME
   FROM INFORMATION_SCHEMA.COLUMNS
   WHERE TABLE_NAME=@TB_REP AND
 (COLUMN_NAME LIKE '%ACC%' OR
 COLUMN_NAME LIKE '%RUNTIME%')
OPEN col_cursor
FETCH NEXT FROM col_cursor Into @ColName


---------------------------------------------------------------------------------------------
-------------- 원본테이블(@TB_REP)에서) 임시 테이블(@TB_TEMP로 적산데이터 빼오기 ---------------
---------------------------------------------------------------------------------------------
-- SQL 쿼리를 작성한다.
-- 현재 구성 : 현재값, 이전값, 현재값-이전값
-- ,R1.A AS A_1, R2.A AS A_2, R1.A-R2.A AS A 형식으로 계속 추가된다.

SET @sSql = ''

WHILE @@FETCH_STATUS = 0
BEGIN
SET @sSql = @sSql + ',R1.' + @ColName + ' AS ' + @ColName + '_1,R2.' + @ColName + ' AS ' + @ColName + '_2,R1.'
+ @ColName + '-R2.' + @ColName + ' AS ' + @ColName

FETCH NEXT FROM col_cursor INTO @ColName
END
CLOSE col_cursor


질문. 위 부분에서 @sSql 변수에 컬럼네임+알리아스로 쿼리스트링을 만듭니다. 컬럼이 200개가 넘고 컬럼 1개당 약 40byte가량을 잡아먹기 때문에 위와같이 만들면 8000byte를 넘어가 쿼리스트링이 짤리게 됩니다. 
이걸 해결 하고자 varchar(8000)짜리 변수 두개를 선언해서 커서 루프돌때 @Ssql이7000바이트 넘어가면 @Ssql2변수에 저장이 되도록 하여 EXEC(@Ssql + @Ssql2) 이런식으로 해도 쿼리스트링은 결국 8000byte밖에 만들어지지가 않더군요.
당최 어떻게 해결해야할까요?
 


No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 823
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 1592
7376 월별 또는 일별 tansaction count 를 조회하는 방법 나파파 2013.11.27 18041
7375 SQL의 CONVERT 구문을 오라클로... [1] 정지홍_308123 2013.11.26 25431
7374 mssql cast vs str performance [4] 엘리엘1 2013.11.26 6275
7373 다른테이블로 값을 복사할때 순번을 적용시키고자 합니다. [3] taz2315 2013.11.26 5296
7372 between 질문입니다. [2] 거저먹네 2013.11.25 16538
7371 2005->2012 linked server [5] taz2315 2013.11.25 11774
7370 저장프로시저 질문입니다. [1] 마에스트로 2013.11.25 4327
7369 조건을 넣었을 경우 결과값을 뽑을 수 있을까요? [6] taz2315 2013.11.22 4595
7368 DataBase 복사와 관련하여 질문입니다 [1] 박연준 2013.11.22 4692
7367 각기 다른 장비에 있는 DB와 join 을 해서 데이터를 불러 올 수 있을까요? [3] taz2315 2013.11.22 5403
7366 복제 관련 질문드립니다. 파란비 2013.11.22 4940
7365 월별 판매 금액을 구하려합니다. [3] 소이현승파파 2013.11.21 5597
7364 mssql 2005 복원 진행 하려 합니다 몇가지 질문좀 드릴께요.. [2] irun 2013.11.21 6109
7363 테이터에 구분값이 포함되어있는경우 select해오는방법이요? [4] 클리티에 2013.11.21 5003
7362 DB서버가 갑자기 느려지는데 원인을 모르겠습니다(2) [2] 토토로 2013.11.21 7655
7361 간밤에 창고정보가 변경되었는데 원인을 찾을 수 있을까요? [5] Larry 2013.11.21 5273
» 쿼리스트링 varchar(8000) 변수가 8000byte를 넘어갈때 해결방법좀 문의드립니다. [2] 사랑하면빨어 2013.11.21 5789
7359 oralce 11g를 sql server 2008 로 마이그레이션하기. [2] SQL은힘들다 2013.11.21 5202
7358 union 과 order by 질문입니다. 도와주세요. [7] 생각찾기 2013.11.20 4045
7357 UPDATE OPENQUERY 문의입니다. [2] 착한이 2013.11.20 5491





XE Login