游标 读取的SELECT 语句不能用order by 排序 怎么办

zhengyingcan 2016-04-09 08:35:08
DECLARE My_Cursor CURSOR --定义游标
FOR (SELECT CA01,CA02,CA03,CA04,CA05,CA07,CA08,CA11
FROM AZCA A WHERE A.CA10=@Level) FOR UPDATE --查出需要的集合放到游标中 并且定义游标为修改类型FOR UPDATE

以上代码,如果我把SQL改成如下,只是多加了order by ,就会报错,报错提示为 order 附件有语法错误,应为‘)'
SELECT CA01,CA02,CA03,CA04,CA05,CA07,CA08,CA11
FROM AZCA A WHERE A.CA10=@Level order by ca09

但是如果不加排序, 出来的结果没有按日期从小到大依次加减,达不到要求。

游标读取的SQL 不能用order by,能用其它的方式进行排序吗,谢谢。
...全文
882 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2016-04-11
  • 打赏
  • 举报
回复
DECLARE My_Cursor CURSOR --定义游标
FOR SELECT CA01,CA02,CA03,CA04,CA05,CA07,CA08,CA11
FROM AZCA A WHERE A.CA10=@Level
order by ca09  
FOR UPDATE
中国风 2016-04-11
  • 打赏
  • 举报
回复
你是不是把order by 放在括号外面了?

那样会报错,放在条件后面,把括号去掉
Ginnnnnnnn 2016-04-11
  • 打赏
  • 举报
回复
因为order by 会使行集变成游标,除非查询的时候带top 关键字,否则会报错,这个语法问题
道素 2016-04-10
  • 打赏
  • 举报
回复
这样应该是可以的
DECLARE My_Cursor CURSOR FOR
	SELECT CA01,CA02,CA03,CA04,CA05,CA07,CA08,CA11
        FROM AZCA A WHERE A.CA10=@Level order by ca09  
FOR UPDATE 
tcmakebest 2016-04-09
  • 打赏
  • 举报
回复
把括号去掉应该就好了, 括号里面是子查询一般不允许排序

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧