为什么这个游标声明没有括号?

Why no parentheses on this cursor declaration?

我这里有一个游标声明:

declare c cursor
for     (select ProductName, ListPrice
        from Products
        where ListPrice > 700)

但是如果我添加一个 order by 子句,我会得到一个错误:

declare c cursor
for     (select ProductName, ListPrice
        from Products
        where ListPrice > 700
        order by ListPrice desc)

错误:Incorrect syntax near the keyword 'order'.

但是如果我去掉括号,错误就会消失:

declare c cursor
for     select ProductName, ListPrice
        from Products
        where ListPrice > 700
        order by ListPrice desc

也许我有点不清楚括号在 SQL 服务器中的作用。是什么赋予了?为什么 order by 子句会以这种方式与括号交互?

order by 不允许在子查询中使用,如评论中所述。将 select 括在括号中会使 SQL 将其解释为子查询。