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 39797
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 21797
7363 테이터에 구분값이 포함되어있는경우 select해오는방법이요? [4] 클리티에 2013.11.21 5042
7362 DB서버가 갑자기 느려지는데 원인을 모르겠습니다(2) [2] 토토로 2013.11.21 7709
7361 간밤에 창고정보가 변경되었는데 원인을 찾을 수 있을까요? [5] Larry 2013.11.21 5323
» 쿼리스트링 varchar(8000) 변수가 8000byte를 넘어갈때 해결방법좀 문의드립니다. [2] 사랑하면빨어 2013.11.21 5843
7359 oralce 11g를 sql server 2008 로 마이그레이션하기. [2] SQL은힘들다 2013.11.21 5242
7358 union 과 order by 질문입니다. 도와주세요. [7] 생각찾기 2013.11.20 4092
7357 UPDATE OPENQUERY 문의입니다. [2] 착한이 2013.11.20 5531
7356 Full table scan 을 하지 않는 방법! [1] tyzm 2013.11.20 4011
7355 라이센스 변경 문의 [1] 석호 2013.11.19 10570
7354 max server memory 설정 문의 [1] 토토로 2013.11.19 4017
7353 이전 기간 데이타 조회 [3] 냥냥 2013.11.19 3473
7352 DB서버가 갑자기 느려지는데 원인을 모르겠습니다 [1] 토토로 2013.11.18 8229
7351 테이블의 값을 가져와 횡으로 출력하는 프로시저를 작성하려고 합니다. [9] 하이페츠 2013.11.18 5508
7350 테이블 내용 중 특정 데이터만 unpivot하는 방법 [2] 하이페츠 2013.11.18 4463
7349 다른 로그인으로 같은 SP 실행 시 실행시간 차이 [7] 디비러 2013.11.18 3725
7348 혹시 외부 clr을 사용해보신분 계신가요? [5] 군고구마 2013.11.17 5659
7347 mssql 테이블과 테이블을 비교해서 없는내용만 지울수없을가요? [4] 서달달 2013.11.17 7802
7346 지역변수에서 nvarchar(max) 이상사용하려면 어떻게 해야하나요? [2] slgi 2013.11.16 13246
7345 [DB] 데이타 센터에서 다른 데이터 센터로 [2] 송동운 2013.11.16 3455
7344 데드락 및 traceon 관련 질문 입니다. [1] 디비러 2013.11.15 4361





XE Login