2017-04-18 9 views
0

저장 프로 시저 (sybase 데이터베이스)에 하나의 선언 된 테이블 변수가 있습니다. 필요에 따라 해당 테이블에 데이터가 채워집니다. 하지만 이제는 다른 조건에 따라 특정 열을 선택하려고합니다. 동일하지만 작동하지 않는 동적 SQL을 시도하고 있습니다. 내가 추측하는 것처럼 갈 수 있을까?선언 된 테이블 변수의 동적 선택 문 - 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 (

하려면 :

코드를 변경

#tableData

-@tableData에서 참조가 임시 테이블은 현재 세션 또는 절차까지 존재합니다

CREATE TABLE #tableData (

변경이 종료 또는 드롭 그 때까지 드롭 테이블을 사용.