SQL ошибка - необходимо объявить табличную переменную "@tablename" - PullRequest
0 голосов
/ 05 марта 2020

Как создать переменную внутри функции и выбрать данные из таблицы? Когда я пытался создать эту функцию, я получаю сообщение об ошибке:

Должен объявить переменную таблицы "@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

1 Ответ

0 голосов
/ 05 марта 2020

Имена таблиц в выражениях не могут быть переменными - вам нужно создать в качестве строки некоторые динамические значения c 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
...