【发布时间】:2014-04-03 18:49:36
【问题描述】:
我正在阅读考试 70-461 Querying SQL Server 2012 的培训工具包。
第 604 页给出了一个示例,我正在对其进行测试,但它不起作用...有什么建议吗?
示例:
IF OBJECT_ID(N'dbo.GetNums', N'IF') IS NOT NULL DROP FUNCTION dbo.GetNums;
GO
CREATE FUNCTION dbo.GetNums (@low as bigint, @high as bigint) RETURNS TABLE
AS
RETURN
WITH
L0 as (SELECT c from (VALUES(1), (1)) as D(c)),
L1 as (SELECT 1 as c FROM L0 as A CROSS JOIN L0 AS B),
L2 as (SELECT 1 as c FROM L1 as A CROSS JOIN L1 AS B),
L3 as (SELECT 1 as c FROM L2 as A CROSS JOIN L2 AS B),
L4 as (SELECT 1 as c FROM L3 as A CROSS JOIN L3 AS B),
L5 as (SELECT 1 as c FROM L4 as A CROSS JOIN L4 AS B),
Nums as (SELECT ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) as rownum
FROM L5)
SELECT @low + rownum - 1 as n
FROM Nums
ORDER BY rownum
OFFSET 0 ROWS
FETCH FIRST @high - @low + 1 ROWS ONLY;
GO
错误信息:
消息 102,级别 15,状态 1,过程 GetNums,第 17 行
“OFFSET”附近的语法不正确。
消息 153,级别 15,状态 2,过程 GetNums,第 18 行
FETCH 语句中选项 FIRST 的使用无效。
【问题讨论】:
-
我猜你这里没有针对 SQL Server 2012 引擎运行 -
SELECT @@VERSION的结果是什么?OFFSET & FETCH是2012版的新功能 -
糟糕.. Microsoft SQL Server 2008 R2 (RTM).. 谢谢! :)
标签: sql sql-server-2012