createfunction dbo.getalltypeidbytypeid(@typeidint) ---传进来一个typeid,列出这个typeid下面的所有的typeid --select dbo.getalltypeidbytypeid(10608) returnsvarchar(8000) as begin declare@resultvarchar(8000) set@result='' declare@ctypeidint declare@calint set@cal= (selectcount(*) from ttype where typeparentid =@typeid) if@cal>0 begin DECLARE mycursor CURSOR local FOR--定义游标 select typeid from ttype where typeparentid =@typeid OPEN mycursor FETCHNEXTFROM mycursor INTO@ctypeid WHILE@@FETCH_STATUS=0--循环游标,即循环当前类的弟一级子类 BEGIN select@result=@result+''+dbo.getalltypeidbytypeid(@ctypeid) FETCHNEXTFROM mycursor INTO@ctypeid End CLOSE mycursor DEALLOCATE mycursor end else begin select@result=@result+','+cast(@typeidasvarchar) end --return right(@result,(len(@result)-1)) return@result --return right(@result,10) end