Я пытаюсь создать динамический SQL для назначения переменных со значениями из функции. Я пытаюсь сгенерировать SQL что-то вроде
Select @StartDate=@EID_Dept
from dbo.WorkHistory(@today,@EID )
Функция возвращает дату (@EID_dept будет именем столбца, возвращаемого функцией), которую мне нужно присвоить @StartDate. А @EID_Dept создается путем объединения @EID и @dept.
Если я вручную напишу SQL, он будет выглядеть как
Select @StartDate = amaan_IT
from dbo.WorkHistory('2016-10-10', amaan)
Мой код ниже:
DECLARE @EID varchar(5), @StartDate VARCHAR(MAX),
@today DATETIME, @dept VARCHAR(10), @EID_dept varchar(20);
Select @today = SYSDATETIME()
Select @dept = dept from dbo.Dept(@EID)
Select @EID_Dept = CONCAT(@EID, @dept)
DECLARE @SQL Varchar(max);
SET @SQL = N'Select @StartDate = @EID_Dept
from dbo.PeriodHistory(@today, @EID)';
EXEC Sp_executesql
@SQL,
N'@StartDate VARCHAR(MAX) out,@EID_dept varchar(max),@today datetime,@EID Varchar',
@StartDate out,
@EID_Dept=@EID_Dept,
@today=@today
SET @SQL = CONCAT(N'SELECT @StartDate = ', @EID_Dept, ' FROM dbo.PeriodHistory(@Today, @EID);
). Хотя это кажется далеким от идеала, я не уверен, что вы делаете это наилучшим образом. - person GarethD   schedule 25.10.2016