首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server到Oracle的转换

SQL Server到Oracle的转换
EN

Stack Overflow用户
提问于 2017-12-06 13:18:57
回答 1查看 30关注 0票数 0

我无法将此SQL Server代码转换为Oracle代码。我不是SQL专家,谁可以帮助转换此代码到Oracle兼容。

代码语言:javascript
复制
 Declare @lvl as int
 Declare @rows as int
 DECLARE @foo as Table(
     KV_MANAGERNR int,
     KV_PERSONNR varchar(10),
     ord int,
     lvl int)

INSERT @foo (KV_MANAGERNR, KV_PERSONNR, ord, lvl)
select KV_MANAGERNR, KV_PERSONNR, row_number() over(order by KV_PERSONNR), 0
    from PERSONSMANAGER where KV_MANAGERNR='127723'

set @rows=@@ROWCOUNT
set @lvl=0

--Do recursion
WHILE @rows > 0
BEGIN
    set @lvl = @lvl + 1

    INSERT @foo (KV_MANAGERNR, KV_PERSONNR, ord, lvl)
    SELECT DISTINCT b.KV_MANAGERNR, b.KV_PERSONNR, row_number() over(order 
    by b.KV_PERSONNR), @lvl
    FROM PERSONSMANAGER b
     inner join @foo f on b.KV_MANAGERNR = f.KV_PERSONNR
     --might be multiple paths to this recursion so eliminate duplicates
     left join @foo dup on dup.KV_PERSONNR = b.KV_PERSONNR
     WHERE f.lvl = @lvl-1 and dup.KV_PERSONNR is null

    set @rows=@@ROWCOUNT 
END

SELECT DISTINCT KV_PERSONNR from @foo order by KV_PERSONNR
EN

回答 1

Stack Overflow用户

发布于 2017-12-07 17:29:25

代码语言:javascript
复制
DECLARE  
    v_lvl Number:=0;  
    v_rows number:=1;  
BEGIN  
    INSERT INTO nt_list_0 (KV_MANAGERNR, KV_PERSONNR, ord, lvl)  
        select KV_MANAGERNR, KV_PERSONNR, row_number() over(order by 
        KV_PERSONNR), 0  from PERSONSMANAGER where KV_MANAGERNR='100047';  

    WHILE v_rows>0  
    LOOP  
        v_lvl := v_lvl +1;  

        INSERT INTO nt_list_0 (KV_MANAGERNR, KV_PERSONNR, ord, lvl)  
        SELECT DISTINCT b.KV_MANAGERNR, b.KV_PERSONNR, row_number() 
          over(order by b.KV_PERSONNR), v_lvl  
        FROM PERSONSMANAGER b  
        inner join nt_list_0 f on b.KV_MANAGERNR = f.KV_PERSONNR  
        left join nt_list_0 dup on dup.KV_PERSONNR = b.KV_PERSONNR  
        WHERE f.lvl = v_lvl-1 and dup.KV_PERSONNR is null;   

        v_rows := sql%rowcount;  
    END LOOP;  
END;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47667293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档