2016-05-26 3 views
1

Я получаю следующее сообщение об ошибке при попытке запустить этот CTEНедопустимое имя объекта для КТР

Неверное имя объекта «ОТВ»

ошибка при использовании следующей КТР о

WITH cte (LOC_ID, [Description], LOC_TYPE) 
AS 
(
    select LOC_ID, DESCR, LOC_TYPE 
    FROM [APOLLO].[dbo].[TBL_STATIC_DATA_LOCATIONS_MERLIVE] 
    WHERE LOC_TYPE = 'DC' 
) 
select * from cte 

Я использую Microsoft SQL Server Management Studio.

+0

Это сообщение об ошибке? –

+0

@FelixPamittan Да, указывая на оба места, я использую cte. –

+0

В самой постановке 'SELECT' должно быть что-то неправильно. Попробуйте запустить 'SELECT' внутри cte. –

ответ

3

определение CTE требует, чтобы команда, предшествующий самому CTE должно заканчиваться точкой с запятой (msdn документация, замечания, шестой), так что если ваш код является частью пакета:

SELECT a, c, f FROM TABLE; -- <--- mind this semicolon 

WITH cte (LOC_ID, [Description], LOC_TYPE) 
AS 
(
    select LOC_ID, DESCR, LOC_TYPE 
    FROM [APOLLO].[dbo].[TBL_STATIC_DATA_LOCATIONS_MERLIVE] 
    WHERE LOC_TYPE = 'DC' 
) 
select * from cte; 

обычной трюк заключается в том, чтобы написать ;WITH, но правильным способом является прекращение команд с точкой с запятой.

1

Отсутствует точка с запятой ';'

;WITH cte (LOC_ID, [Description], LOC_TYPE) 
AS 
(

select LOC_ID,DESCR,LOC_TYPE 
FROM [APOLLO].[dbo].[TBL_STATIC_DATA_LOCATIONS_MERLIVE] 
WHERE LOC_TYPE = 'DC' 

) 

SELECT * FROM cte 
Смежные вопросы