2017-04-18 195 views
0

我在存儲過程(sybase數據庫)中有一個聲明的表變量。根據需要在該表中填入數據。但是現在我想根據不同的條件選擇特定的列。我正在嘗試動態SQL來做同樣的事情,但不工作。它能像我所假設的那樣走嗎?聲明表變量動態Select語句 - SYBASE

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」 OR必須聲明表變量 「@tableData」。

回答

0

刪除關鍵字 '爲' 前 '表'

0

更改代碼:

declare @tableData as table (

要:

CREATE TABLE #tableData (

變化從@tableData#tableData

引用的臨時表將一直存在,直到當前會話或過程結束,或直至它你把它用DROP TABLE。