如何在函数内部创建变量并从表中选择数据?当我尝试创建此函数时,出现错误:
必须声明表变量“ @tablename”
这是我的功能:
create function FunctionName (@val1 INT , @val2 INT)
RETURNS @result TABLE
(
Name1 nvarchar(100) not null,
Name2 nvarchar(100) not null,
Name3 nvarchar(100) not null,
Name4 nvarchar(100) not null,
)
AS
BEGIN
DECLARE @tablename nvarchar(max)
SET @tablename = CONCAT('Export_Pivot_',@val1,'_',@val2)
INSERT into @result
SELECT
name1,name2,name3,name4
FROM @tablename
RETURN
END
语句中的表名不能是变量-您必须创建一些动态SQL作为字符串,然后执行它。您还需要将选择填充到@result
表中。
表声明中也有太多逗号。
尝试一下:
create function FunctionName (@val1 int , @val2 int)
RETURNS @result TABLE
(
Name1 nvarchar(100),
Name2 nvarchar(100),
Name3 nvarchar(100),
Name4 nvarchar(100)
)
AS
BEGIN
exec('SELECT name1,name2,name3,name4 FROM ' + 'Export_Pivot_'+@val1+'_'+@val2 + ' into @result');
RETURN
END
go