声明的表变量上的动态 Select 语句 - SYBASE
Posted
技术标签:
【中文标题】声明的表变量上的动态 Select 语句 - SYBASE【英文标题】:dynamic Select statement on declared table variable - SYBASE 【发布时间】:2017-04-18 07:18:17 【问题描述】:我在存储过程(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”。
【问题讨论】:
【参考方案1】:修改代码:
declare @tableData as table (
收件人:
CREATE TABLE #tableData (
将引用从 @tableData
更改为 #tableData
临时表将一直存在,直到当前会话或过程结束,或者直到您使用 drop table 删除它。
【讨论】:
【参考方案2】:删除“table”之前的关键字“as”
【讨论】:
以上是关于声明的表变量上的动态 Select 语句 - SYBASE的主要内容,如果未能解决你的问题,请参考以下文章
oracle 隐式游标,显示游标,游标循环,动态SELECT语句和动态游标,异常处理,自定义异常