我是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());
有办法吗?
答案 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;