SQL错误-必须声明表变量“ @tablename”

问题描述 投票:1回答:1

如何在函数内部创建变量并从表中选择数据?当我尝试创建此函数时,出现错误:

必须声明表变量“ @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-server tsql variables stored-functions
1个回答
0
投票

语句中的表名不能是变量-您必须创建一些动态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
© www.soinside.com 2019 - 2024. All rights reserved.