Foxtable(狐表)用户栏目专家坐堂 → 递归函数问题


  共有10094人关注过本帖树形打印复制链接

主题:递归函数问题

帅哥哟,离线,有人找我吗?
jspta
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1731 积分:11255 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2016/3/1 8:45:00 [显示全部帖子]

用With 进行递归很容易的,
简单例子如下,其中A是主键,B是关联的上级所指主键,
with cte as (S elect A,B,0 as C
f rom 表1
w here b is null
U nion All
S elect a.A,a.B,b.C+1 as C
f rom 表1 as a inner join cte as b on a.A = b.B)

s elect * f rom cte where c <=3

 回到顶部
帅哥哟,离线,有人找我吗?
jspta
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1731 积分:11255 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2016/3/3 13:28:00 [显示全部帖子]

以下是引用fubblyc在2016/3/3 12:35:00的发言:
大红袍老师,一模一样的代码,在我数据源就能实现三级递归,在客户数据源数据表里没有显示出三级递归。不知道是什么原因。检查过了,客户的数据表也是有主键,能保存。那这大概会是什么原因导致的呢?代码应该是没问题,问题点应该是在客户的数据表。。因为我的数据表是可以实现的。表也是一样的,我从客户那里复制过来的。
数据表的递归直接使用 SQL 表表达式(With语句)进行递归,效率大大提高和复杂度大大降低。这个直接就可以应用到所谓的ERP的物料递归上,十几行代码轻松解决。狐表的以过程为主的方案也不太适合递归的。


 回到顶部