ORACLE下为什么执行会提示缺少表达式啊?? SQL下运行很正常。

projack_lin 2011-11-07 03:21:54
update wcmchnldoc set docorder=row from (select *,row=row_number()over(order by docreltime) from wcmchnldoc)wcmchnldoc where docchannel=266


这个语句在sql里很正常啊。在ORACLE里就不行了,ORACLE不也有row_number()over吗
...全文
236 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
BenChiM888 2011-11-07
  • 打赏
  • 举报
回复
两边的update语法不一样。
根据你的写法改成oracle的,这只是修改,但是估计还会报错,返回多行的错误,你根据你自己的需求改改吧。

[Quote=引用 3 楼 cutebear2008 的回复:]
显然不行的!
SELECT ROW_NUMBER() OVER(ORDER BY DOCRELTIME) FROM WCMCHNLDOC
这句话返回的东西不好说啊!

引用 1 楼 benchim888 的回复:

两边的update语法不一样。
根据你的写法改成oracle的,这只是修改,但是估计还会报错,返回多行的错误,你根据你自己的需求改改吧。
SQL code

UPD……
[/Quote]
cutebear2008 2011-11-07
  • 打赏
  • 举报
回复
显然不行的!
SELECT ROW_NUMBER() OVER(ORDER BY DOCRELTIME) FROM WCMCHNLDOC
这句话返回的东西不好说啊!
[Quote=引用 1 楼 benchim888 的回复:]

两边的update语法不一样。
根据你的写法改成oracle的,这只是修改,但是估计还会报错,返回多行的错误,你根据你自己的需求改改吧。
SQL code

UPDATE WCMCHNLDOC
SET DOCORDER =
(SELECT ROW_NUMBER() OVER(ORDER BY DOCRELTIME) FROM WCMCHNLDOC)
WHERE DOC……
[/Quote]
BenChiM888 2011-11-07
  • 打赏
  • 举报
回复
两边的update语法不一样。
根据你的写法改成oracle的,这只是修改,但是估计还会报错,返回多行的错误,你根据你自己的需求改改吧。

UPDATE WCMCHNLDOC
SET DOCORDER =
(SELECT ROW_NUMBER() OVER(ORDER BY DOCRELTIME) FROM WCMCHNLDOC)
WHERE DOCCHANNEL = 266

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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