声明的表变量上的动态Select语句 - SYBASE

时间:2017-04-18 07:18:18

标签: select dynamic sybase table-variable

我在存储过程中有一个声明的表变量(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 个答案:

答案 0 :(得分:1)

更改代码:

declare @tableData as table (

要:

CREATE TABLE #tableData (

将引用从@tableData更改为#tableData

临时表将一直存在,直到当前会话或过程结束,或直到您使用drop table删除它。

答案 1 :(得分:0)

删除关键字' as'在表格之前