首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

SQL话语改成ORACLE语句

2013-01-09 
SQL语句改成ORACLE语句 with tbl as(select rep_id from dmis_rep_doc where rep_id@rep_idunion allsele

SQL语句改成ORACLE语句
 with tbl as
      (
      select rep_id from dmis_rep_doc where rep_id=@rep_id
      union all
      select a.rep_id from dmis_rep_doc a,tbl b where a.rep_parent_id=b.rep_id
      )
      update dmis_rep_doc set rep_state=@rep_state
      where rep_id in (select * from tbl)


如何该成ORACLE 语句
[解决办法]
--SQL SERVER 2005的递归写法
WITH tbl AS
  ( SELECT rep_id FROM dmis_rep_doc WHERE rep_id=@rep_id
  UNION ALL
  SELECT a.rep_id FROM dmis_rep_doc a,tbl b WHERE a.rep_parent_id=b.rep_id
  )
UPDATE dmis_rep_doc
SET rep_state =@rep_state
WHERE rep_id IN
  (SELECT * FROM tbl
  )
--ORACLE 的递归写法
DECLARE
  var_rep_id    INT := 10; --具体类型不知道,假定为INT
  var_rep_state INT := 1;
BEGIN
  UPDATE
    (SELECT *
    FROM dmis_rep_doc
      START WITH rep_id              = var_rep_id
      CONNECT BY prior rep_parent_id = rep_id
    ) a
  SET a.rep_state = var_rep_state;
END;

热点排行