2015-01-07 4 views
0

많은 조합을 시도했지만 항상 오류가 있습니다. (선택 절차/하드 코드 내 변수를 교체하여 삽입 작동하고 외부)동적 프로 시저의 결과를 테이블에 삽입하는 SQL 프로 시저

기본적으로 내 시저는 문자열로 날짜 변수를 수신 역동적 인 선택을하고 그 결과로 테이블을 반환해야하고 그것을 삽입해야 다른 기존 테이블.

alter procedure [dbo].[SavePosition] 
(@Refdate as varchar(15) =null) 
as 
begin 
set NOCOUNT on 
declare @YdDate as varchar(15) 
declare @SQL AS NVARCHAR(max) 

--To get prior date from @refdate(standalone select working well): 
set @YdDate = (SELECT distinct max(TradeDate) from Trades where TradeDate < @Refdate) 

--Sample of the query: 
set @SQL='Select ('''+ @Refdate +''') AS Refdate, @('''+ @YdDate +''') as Product from...join..having...group...'; 

INSERT INTO [dbo].[Position]([Refdate],[Product],...) 
EXEC sp_executesql @sql 
end 
go 

내가 많이받을 아래에 내가 도망 : 동적 쿼리 (너무 커서)의 코드 제거 부분 ". 바인딩 수 없습니다" "다중 부분 식별자가"...

exec [dbo].[SavePosition] '2014-12-10' 
+0

수 '는 "여러 부분으로 구성된 식별자가".... "바인딩 할 수 없습니다."'@Sql – Flib

답변

0

@SQL 변수에 전체 insert 문을 저장해야합니다. 이런 식으로 시도하십시오.

@ SQL = 'INSERT INTO [dbo] .Position AS Refdate, @ (' ''+ @YdDate + '')를 Product from ..으로 설정하십시오. .join..having ... group ... ';

EXEC의 sp_executesql을 여전히

+0

오류 : "메시지 102, 수준 15, 상태 1, 잘못된 라인 (436) 구문은 'as'근처에 있습니다. " 내 스크립트가 심지어 436 줄을 가지고 있다는 점에서 나를 괴롭히는 이유는 무엇입니까? / – Flib