请帮助我,我认为它的语法正确。 但是为什么它警告我在SQL Server 2017中不正确
writer.WritePropertyName("acl_entries");
jsonWriter.WriteStartArray();
for (int row = 0; row <= author.acl_entries.Count; row++)
{
jsonWriter.WriteStartObject();
jsonWriter.WritePropertyName("stakeholder_id");
jsonWriter.WriteValue(author.acl_entries[row].stakeholder_id);
jsonWriter.WritePropertyName("stakeholder_name");
jsonWriter.WriteValue(author.acl_entries[row].stakeholder_name);
jsonWriter.WritePropertyName("stakeholder_type_id");
jsonWriter.WriteValue(author.acl_entries[row].stakeholder_type_id);
jsonWriter.WriteEndObject();
}
jsonWriter.WriteEndArray();
答案 0 :(得分:1)
OFFSET
的语法为OFFSET {Rows} ROWS
。您缺少ROWS
关键字。
这不是您的SQL,因为它是一张图片,但是,伪SQL中的正确语法是(但是我没有按照JohnyL的评论在图片中回答):
SELECT {Your Coloumns}
FROM YourTable YT
ORDER BY {Order Columns}
OFFSET @OffSetVar ROWS --You're missing ROWS
FETCH FIRST @FirstVar ROWS ONLY;
--Above could also be replaced with (they are semantically the same)
--FETCH NEXT @NextVAR ROWS ONLY;
文档中有一个很好的例子:Specifying expressions for OFFSET and FETCH values
帖子中的SQL不会产生错误:
CREATE TABLE #TD_TD(Request int);
INSERT INTO #TD_TD (Request)
VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),
(11),(12),(13),(14),(15),(16),(17),(18),(19),(20),
(21),(22),(23),(24),(25),(26),(27),(28),(29),(30);
SELECT Request
FROM #TD_TD
ORDER BY Request
OFFSET 1 ROWS
FETCH NEXT 20 ROWS ONLY;
GO
DROP TABLE #TD_TD;
这将返回值2-21