使用String从函数中检索列

时间:2016-11-03 15:12:22

标签: sql sql-server tsql

我是SQL新手并尝试从函数返回的值中为变量赋值,但我无法获取该值。

我的查询是:

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

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

当我运行上述查询时,我只是将值Q1_CY分配给@StartDate,而不是函数中的实际值。

如果我不想使用变量,那么我的查询如下:

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

有办法吗?

1 个答案:

答案 0 :(得分: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', @StartDate=@StartDate;