为什么这个游标声明没有括号?
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 将其解释为子查询。
我这里有一个游标声明:
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 将其解释为子查询。