데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
아래 sql문을 실행 하면 위의 에러가 나타납니다
그래서 아래 처럼 DECLARE @AATVP tickstockTYPE을 @sql1 문에 포함 시키면 아에
SELECT top 1 되는게 없이 null로 나타납니다
헌데 sql문을 그대로 실행하면 또 잘 실행되서 top1 에 테이블 데이타가 나타남
이유를 모르겠읍니다
sql문없이 돌린 소스
DECLARE @AATVP tickstockTYPE
INSERT INTO @AATVP
SELECT top 1
time ,
yymmdd ,
PowerMD ,
HighPowerMD ,
HighPowerMDTime ,
LowPowerMD ,
LowPowerMDTime ,
HighPriceD ,
HighPriceDTime ,
LowPriceD ,
LowpriceDTime
,TRMDYear
,2 as
inserttype
from santa62.dbo.tickstock a --and time <= @p1stTimeCharttmp
join
(select top 1 shcode, TRMDYear from tickchart where shcode = '134780' ) b
on a.shcode = b.shcode
where a.shcode = '134780' and a.yymmdd >= 160926 order by yymmdd asc, time asc
원 소스
DECLARE @AATVP AS tickstockTYPE
declare @shcode char(6)
CREATE TYPE tickstockTYPE AS TABLE
(
time datetime,
yymmdd char(6),
PowerMD bigint,
HighPowerMD int,
HighPowerMDTime datetime,
LowPowerMD int,
LowPowerMDTime datetime ,
HighPriceD int,
HighPriceDTime datetime,
LowPriceD int, --10
LowpriceDTime datetime
,TRMDYear int
,inserttype int --1 tickstock으로 insert 2.tickchart로 insert
);
go
set @sql1 =N'
DECLARE @AATVP tickstockTYPE
INSERT INTO @AATVP)
SELECT top 1
time ,
yymmdd ,
PowerMD ,
HighPowerMD ,
HighPowerMDTime ,
LowPowerMD ,
LowPowerMDTime ,
HighPriceD ,
HighPriceDTime ,
LowPriceD ,
LowpriceDTime
,TRMDYear
,2 as
inserttype
from santa' +convert(varchar,@dbnum)
set @sql2= N'.dbo.tickstock a --and time <= @p1stTimeCharttmp
join
(select top 1 shcode, TRMDYear from tickchart where shcode = '''+convert(varchar,@shcode)+''' ) b
on a.shcode = b.shcode
where a.shcode = '''+convert(varchar,@shcode)+''' and a.yymmdd >= '+convert(varchar,@firstdate)+' order by yymmdd asc, time asc '
set @sql2 = @sql1+@sql2
EXEC sp_executesql @sql2
PRINT @sql2
Comment 1
-
항해자™
2018.02.09 08:55
테이블 변수만 밖으로 빼세요,,
insert into @tSample
exec sp_executesql @vSQL