+ -
当前位置:首页 → 问答吧 → ORACLE下为什么执行会提示缺少表达式啊?? SQL下运行很正常。

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

时间:2011-11-07

来源:互联网

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吗

作者: projack_lin   发布时间: 2011-11-07

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

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


作者: BenChiM888   发布时间: 2011-11-07

该回复于2011-11-07 16:09:39被管理员删除

  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
#3楼 得分:0回复于:2011-11-07 16:32:24
显然不行的!
SELECT ROW_NUMBER() OVER(ORDER BY DOCRELTIME) FROM WCMCHNLDOC
这句话返回的东西不好说啊!
引用 1 楼 benchim888 的回复:

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

UPDATE WCMCHNLDOC
SET DOCORDER =
(SELECT ROW_NUMBER() OVER(ORDER BY DOCRELTIME) FROM WCMCHNLDOC)
WHERE DOC……

作者: tl200611218   发布时间: 2011-11-07

两边的update语法不一样。
根据你的写法改成oracle的,这只是修改,但是估计还会报错,返回多行的错误,你根据你自己的需求改改吧。
引用 3 楼 cutebear2008 的回复:
显然不行的!
SELECT ROW_NUMBER() OVER(ORDER BY DOCRELTIME) FROM WCMCHNLDOC
这句话返回的东西不好说啊!

引用 1 楼 benchim888 的回复:

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

UPD……

作者: cutebear2008   发布时间: 2011-11-07