• λ我爱Aspx >> Asp.Net >> SQL在存储过程中使用递归
  • SQL在存储过程中使用递归

  • :未知  Դ:internet  :2007-5-20 16:44:46  ؼ:sql
  • 尽管阶乘机制非常美妙,但在日常编程中似乎没有多少机会用到。然而,上面的代码还是精确的展示了递归的基本原理和具体的实践。

    在一些实际问题中,递归都将是一种有价值的编程技巧。其中一个经典的编程问题名为“BillofMaterials(用料单)”。该问题有至少两种应用:

    给出所需对象的一个实例,求出构造此实例的用料单;

    指定组成某个对象的若干对象的详细目录,求出能够构造出多少对象?

    现在让我们来假设我们已经有了对象O,它是由四个X对象和三个Y对象以及七个Z对象组成。因此,要构造一个单独的O对象显然我们将会需要四个X对象、三个Y对象和七个Z对象。然而,对象Y和Z都需要一定数量的Q对象(例如对螺丝指定周长、螺栓样式、螺帽样式)。因此我们需要分析对象Y和X,确定它们所需要的Q对象个数,然后再确定我们能提供相应总数。如果不能,那么我们将无法创建对象Q。

    SQLServer2000无法较方便的解决这一问题,除非你能够提前知道递归层次。然而,SQL2005测试版在这一问题上已经进行了很长时间的研究。SQL项目负责人JoeCelko提供了非常巧妙的解决办法,该办法涉及到在行插入(row-insert)时间对递归层次进行跟踪。这一解决方案非常有用,但需要使用触发器或类似机制通过每一次插入、更新或删除来更新层次深度队列。你可以查看这种方法在Access下的实现。随后就可以方便的将这种解决方案引入到SQLServer中,并根据自己的需要进行修改。

    Ҷƪл˵?
  • һƪ存储过程分页
    һƪ如何获取 IP 用户名 等信息