2016-11-03 2 views
0

Я новичок в SQL и пытаюсь присвоить значение переменной из значения, возвращаемого функцией, но я не могу получить значение.Использование String для извлечения столбца из функции

Мой запрос:

DECLARE @StartDate DATETIME,@ReferenceDateString VARCHAR(10)='Q1_CY' ; 

Select @[email protected] from dbo.Dates(GETDATE()); 

Когда я запускаю выше запрос я просто получить значение Q1_CY assgined к @StartDate, а не фактического значения из функции.

Если я не хочу, чтобы использовать переменную, то мой запрос выглядит следующим образом:

Select @StartDate=Q1_CY from dbo.Dates(GETDATE()); 

Есть ли способ сделать это?

+0

Вы можете попробовать 'SET @StartDate = ВЫБРАТЬ ....'. – FDavidov

+0

Для этого вам нужно использовать динамический SQL. Если вы изучаете SQL, пропустите это и перейдите к чему-то еще, пока вам не станет более комфортно с языком. –

+0

@GordonLinoff вы можете разместить динамический SQL, чтобы я мог понять и попробовать, поскольку я совершенно не новичок в SQL, но новичок в Dynamic SQL. –

ответ

0

Это довольно громоздко в динамическом SQL, потому что вам нужен выходной параметр:

declare @StartDate DATETIME, 
     @ReferenceDateString VARCHAR(10)='Q1_CY' ; 
declare @sql nvarchar(max); 

set @sql = 'Select @StartDate = @ReferenceDateString from dbo.Dates(GETDATE())'; 

set @sql = replace(@sql, '@ReferenceDateString', @ReferenceDateString); 

exec sp_executesql @sql, N'@StartDate datetime output', @[email protected]; 
Смежные вопросы