cte

时间:2016-05-26 07:55:03

标签: sql sql-server tsql ssms

尝试运行此cte

时出现以下错误
  

无效的对象名称' cte'

使用以下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。

2 个答案:

答案 0 :(得分:3)

CTE的定义要求CTE本身之前的命令必须以分号(msdn文档,备注,第6位)终止,因此如果您的代码是批次:

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 :(得分:1)

缺少分号';'

EXEC dbo.GetRate @PkId=1     --- returns values for PkId=1
EXEC dbo.GetRate @PkId=12314 --- returns default values