日期:2014-05-17  浏览次数:20833 次

sql 拼接列名的问题
表中有很多列,命名如下WK<NN>_SALES_FCST ,其中NN为数字,现在想写一个函数根据传入的参数返回对应列的值,请教大家帮忙给个解决办法,谢谢
CREATE FUNCTION Fun_Name(
@ItemNbr int,
@NN int
)
RETURNS int
AS
BEGIN
DECLARE @WeekSales int;
declare @sqlStr varchar(200);
select @sqlStr = 'select @WeekSales = WK'+@NN+'_SALES_FCST from Stg.SKU_WKLY_SALES_FC where MDS_FAM_ID='+@ItemNbr;
--问题出来了,这样写,在执行语句的时候会提示@WeekSales,@NN 变量未定义
exec(@sqlStr);
--如果把变量定义在上面的sql语句中,那后面返回值的时候又会提示变量未定义
        RETURN @WeekSales 
END
GO
------最佳解决方案--------------------
exec(@sqlStr) 改成:
EXECUTE sp_executesql @sqlStr,N'@WeekSales int output',@WeekSales output
------其他解决方案--------------------
than you