使用WITH语句,更新表数据,不行:

WITH VN AS (
SELECT T.ID, T.NODE_ID, N.NODE_TYPE, N.NODE_NAME, T.NODE_LEVEL, T.RN FROM
(
SELECT ID, NODE_ID, LEVEL NODE_LEVEL, ROWNUM RN
FROM ORG_NODE_TREE
START WITH PARENT_ID IS NULL
CONNECT BY PRIOR NODE_ID=PARENT_ID
) T
LEFT JOIN ORG_NODE N ON N.ID=T.NODE_ID
ORDER BY T.RN
)
UPDATE ORG_NODE N
SET N.NODE_TYPE='STATION'
WHERE N.ID IN
(
SELECT NODE_ID FROM VN
WHERE NODE_LEVEL=1
)

报以下错误:

[Err] ORA-: SQL command not properly ended

不使用WITH,可以:

WITH VN AS (
SELECT T.ID, T.NODE_ID, N.NODE_TYPE, N.NODE_NAME, T.NODE_LEVEL, T.RN FROM
(
SELECT ID, NODE_ID, LEVEL NODE_LEVEL, ROWNUM RN
FROM ORG_NODE_TREE
START WITH PARENT_ID IS NULL
CONNECT BY PRIOR NODE_ID=PARENT_ID
) T
LEFT JOIN ORG_NODE N ON N.ID=T.NODE_ID
ORDER BY T.RN
) UPDATE ORG_NODE N
SET N.NODE_TYPE='STATION'
WHERE N.ID IN
(
SELECT NODE_ID FROM
(
SELECT T.ID, T.NODE_ID, N.NODE_TYPE, N.NODE_NAME, T.NODE_LEVEL, T.RN FROM
(
SELECT ID, NODE_ID, LEVEL NODE_LEVEL, ROWNUM RN
FROM ORG_NODE_TREE
START WITH PARENT_ID IS NULL
CONNECT BY PRIOR NODE_ID=PARENT_ID
) T
LEFT JOIN ORG_NODE N ON N.ID=T.NODE_ID
ORDER BY T.RN
)
WHERE NODE_LEVEL=
)

如果把WITH后面换成SELECT,一点问题没有,但UPDATE就是报错,好奇怪,难道WITH这种间接地写法不能用于UPDATA。

一种说法是:“with必须紧跟引用的select语句,而不是delete,update,merge等”

http://www.itpub.net/thread-1585644-1-1.html

提到可以用MERGE:

--wkc168 发表于 2012-3-2 13:28
merge into c using (select * from b) a on(c.g=a.h)
when matched then
update set c.e=a.f

http://stackoverflow.com/questions/5380559/update-statement-using-with-clause

最新文章

  1. JavaScript作用域原理(二)——预编译
  2. ProFTPD <=1.3.5 mod_copy 未授权文件复制漏洞
  3. cocos2dx 3.x(移动修改精灵坐标MoveTo与MoveBy)
  4. JavaScript对象属性赋值操作的逻辑
  5. Android高仿微信图片选择功能的PhotoPicker
  6. ie7下 滚动条内容不动问题
  7. Java科普之算法剖析
  8. Java学习之自定义异常
  9. TCP四次挥手
  10. 【转】UNREFERENCED_PARAMETER的作用
  11. ansj原子切分和全切分
  12. annotation的理解
  13. spring中整合memcached,以及创建memcache的put和get方法
  14. ubuntu安装docker以及基本用法
  15. 实例解析forEach、for...in与for...of
  16. vs2015 引用lib库和dll
  17. [eetcode 10]Regular Expression Matching
  18. ES5之defineProperty
  19. 前端PHP入门-033-连接数据库-天龙八步
  20. Python中列表的各种方法

热门文章

  1. Qt webkitwidgets模块和webenginewidgets模块
  2. Lua与C交换
  3. 解决URL参数中文乱码
  4. shared_ptr / weak_ptr 代码片段
  5. java Jvm工作原理学习笔记
  6. up7-文件保存位置
  7. Finding Memory Leaks with SAP Memory Analyzer
  8. SOAP协议初级指南 (二)
  9. winsock的io模型(终极篇)
  10. 安装并使用PICT,生成测试用例