Динамический оператор 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
Временная таблица будет существовать до тех пор, пока не завершится текущий сеанс или процедура или пока вы не удалите ее с помощью отбрасываемой таблицы.