声明的表变量上的动态Select语句-SYBASE
我在存储过程(sybase数据库)中声明了一个表变量。根据需要在该表中填充数据。但是现在我想根据不同的条件选择特定的列。我正在尝试使用动态SQL来做同样的事情,但不起作用。它能像我想象的那样发展吗声明的表变量上的动态Select语句-SYBASE,select,dynamic,sybase,table-variable,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)
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”。删除“table”之前的关键字“as”更改代码:
declare @tableData as table (
致:
将引用从@tableData
更改为#tableData
临时表将一直存在,直到当前会话或过程结束,或者直到您使用drop table将其删除为止
CREATE TABLE #tableData (