我尝试了很多组合,但总是有错误。(用硬代码替换我的变量的选择/插入在程序之外工作)
基本上我的过程必须做一个动态选择,接收一个日期变量作为字符串并返回一个表作为结果,并应该将它插入到其他现有表中。删除部分动态查询的代码(太大):
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'