none
使用sqlserver2000如何实现递归函数调用? RRS feed

  • 问题

  • 事情是这样的.

    对于一个树状结构的数据库,

    每个人都有两个属性, orgen,superOrgen,表示自己的orgen号码和他上级的orgen号码

    如果orgen = superOrgen,表示他是最高级的领导.

    现在我想通过自定义函数的形式写到数据库自定义函数中.

    表名是SiteTable.

    函数通过输入一个orgen,返回他所下属的所有orgen表.就是他下级的下级也得返回.

    这样该如何实现呢.查了一下文档,说可以使用游标等等,但是我自己写了一些还是不对

     

    CREATE FUNCTION getOrgen (@number varchar(50))  

    RETURNS  @subTable TABLE

     (

        number varchar(50)

    ) AS  Begin

    declare @subOrgen varchar(50) 

    dECLARE @CursorVar CURSOR

    set @CursorVar = Cursor For

      select  S.number from  SiteTable  As S where S.superOrgen = @number and S.type ='2'    

    Open @CursorVar

    Fetch Next From @CursorVar Into @subOrgen

    While @@Fetch_Status = 0

     Begin

       insert  into @subTable values(@subOrgen)

       Fetch Next From @CursorVar Into @subOrgen

     End

     --select * from @subTable 

    Close @CursorVar

    Deallocate @CursorVar

    return 

    End 

    我这个是尝试写的,没有实现功能而且还报错,207说没有superOrgen列无效.实际上SiteTable是有superOrgen列的.
    该如何解决呢?
    或者有什么变通的方法呢?

     

     



    • 已编辑 msbyebye 2011年4月13日 14:10 还是拼写错误
    2011年4月13日 14:07

答案

  • 找到答案了,还是我的拼写错误.

    列名是 superOrgan,我拼成 superOrgen..........................................

    找了一天错误..

    • 已标记为答案 msbyebye 2011年4月14日 2:17
    2011年4月14日 2:17