Динамический оператор Select для объявленной табличной переменной - SYBASE

У меня есть одна объявленная табличная переменная в хранимой процедуре (база данных sybase). Данные заполняются в этой таблице по мере необходимости. Но теперь я хочу выбрать конкретные столбцы на основе разных условий. Я пытаюсь динамический SQL, чтобы сделать то же самое, но не работает. Может ли это пойти так, как я предполагаю?

ALTER PROCEDURE "dbo"."sp_userMenus" 
@fundName VARCHAR(20) , @userName VARCHAR(20)
AS
BEGIN
declare @tableData as table (
        id int IDENTITY(1,1),
        [menuDisplayName] nvarchar(100),
        [menuOrder] int,
        [menuType] nvarchar(100),
        [parentVerticalMenu] nvarchar(100),
        [parentHorizontalMenu] nvarchar(100),
        [groupID] int,
        [inDashboardAll] int,
        [inDashboardOverview] int,
        [inDetail] int,
        [inSummary] int,
        [isDetail] int,
        [zOrder] int
    )

    --insert into @tableData

    if @userName = 'ADMIN'
        SET @SQLQuery = 'select *
            from @tableData order by parentVerticalMenu, parentHorizontalMenu'
    else
        SET @SQLQuery = 'select menuDisplayName,menuOrder,menuType,parentVerticalMenu,parentHorizontalMenu 
            from @tableData order by parentVerticalMenu, parentHorizontalMenu'

    EXEC sp_executesql @SQLQuery

END

получение ошибки "Должен объявить скалярную переменную"@tableData"ИЛИ Должен объявить табличную переменную"@tableData".

2 ответа

Изменить код:

declare @tableData as table (

Для того, чтобы:

CREATE TABLE #tableData (

Изменить ссылки с @tableData в #tableData

Временная таблица будет существовать до тех пор, пока не завершится текущий сеанс или процедура или пока вы не удалите ее с помощью отбрасываемой таблицы.

Удалить ключевое слово "как" до "таблицы"

Другие вопросы по тегам