工程BOM单的计算,只能用递归算法实现吗?工程BOM单的递归计算:
工程BOM单的结构为树型结构,如图所示, 工程BOM
|
|----A1*结构数1
|
|----A2*结构数2
|
|
|----A3*结构数3
| |
| |----B1*结构数5
| |
| |----A2*结构数6
|
|
|----A4*结构数4 某一工程BOM的结构已知,且各子构件的库存信息已知(现有库存,在制库存,安全库存等)
现计划生产XX个,如何快速计算各子项目的需求量,在计算时如各子构件的库存信息发生变化时,下次计算将采用新的库存信息.
如获至宝A2在第一层和第二层都出现了. 我们采用递归的算法基本上可以实现,但速度很是问题?
有没有更好的方法,用存储过程好像不可能实现递归?

解决方案 »

  1.   

    数据库如果是oracle可以用树型结构表的查询,举例如下:
    select ID,PARENT_ID from parent_child
    connect by prior id = parent_id
    start with id = 1;
      

  2.   

    你是说动态SQL,游标吗,速度如何呀,我觉得用存储过程做单层后用代码做循环解决, 不过还没写原来试过用存储过程做单层后,速度有点提高!
      

  3.   

    至于游标的问题,我想楼主一定是定义成了全局的游标(默认值),所以会出现游标冲突declare 游标名 cursor local  --这里写个local就行了,默认是global
    for
    select ...
      

  4.   

    让我试试,游标可以递归吗,不是存储过程不能实现递归,而是用动态SQL时的游标.