在SQL2005/SQL2008中CTE用法差异

--SQL2008中执行成功

SELECT @@version 
/*
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64)   Apr  2 2010 15:48:46   Copyright (c) Microsoft Corporation  Data Center Edition (64-bit) on Windows NT 6.1 <X64> (Build 7600: ) (Hypervisor) 
*/
IF 1>0
	WITH c
	AS
	(
	SELECT 1 AS ID)
	SELECT * FROM c
	
	

--SQL2005中执行相同语句时出错

SELECT @@VERSION
/*
Microsoft SQL Server 2005 - 9.00.5000.00 (Intel X86)   Dec 10 2010 10:56:29   Copyright (c) 1988-2005 Microsoft Corporation  Enterprise Edition on Windows NT 6.1 (Build 7600: ) 
*/

IF 1>0
	WITH c
	AS
	(
	SELECT 1 AS ID)
	SELECT * FROM c
/*
消息 319,级别 15,状态 1,第 2 行
关键字 'with' 附近有语法错误。如果此语句是公用表表达式或 xmlnamespaces 子句,那么前一个语句必须以分号结尾。

*/

--改为
IF 1>0
BEGIN
	WITH c
	AS
	(
	SELECT 1 AS ID)
	SELECT * FROM c
END


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值