大家帮帮忙,一个简单的函数,请大家帮帮忙

一个简单的函数,请大家帮帮忙 - 故障解答 - 电脑教程网

一个简单的函数,请大家帮帮忙

日期:2007-04-27   荐:
一个简单的函数,请大家帮帮忙module_id parent_id level module_name have_son 1 0 1 总公司 1(有子结点) 2 1 2 分公司1 1 3 1 2 分公司2 0 4 2 3 开发部 1 5 2 3 销售部 0 6 4 4 办公室 0我现在要对该表进行树状结构排序,也就是下面这样的结果module_id parent_id level module_name have_son 1 0 1 总公司 1 2 1 2 分公司1 1 4 2 3 开发部 1 6 4 4 办公室 0 5 2 3 销售部 0 3 1 2 分公司2 0请问怎样做?请给出代码,谢谢,分不够可以再加select * from tbxx order by have_son desc,level asc--你的排序无规律吧?楼上的大哥,做程序的树应该知道吧,怎么说我的排序无规律?看不明白 :(create function f_getorder(@module_id int)returns varchar(8000)asbegin declare @ret varchar(8000) select @ret = right('0000' module_id,4), @module_id = parent_id from 表 where module_id = @module_id while(@@rowcount<>0) select @ret = right('0000' module_id,4) @ret, @module_id = parent_id from 表 where module_id = @module_id and @module_id != 0 return @retend --调用函数select * from 表 order by dbo.f_getorder(module_id)---参考http://blog.csdn.net/xluzhong/articles/340928.aspx我第一次写函数就出错,帮我再看看吧。create function list(@in int)returns @out intasbeginset @out=@inreturn @outend超简单的函数,输入什么就返回什么,但是有错改为create function list(@in int)returns Intasbegin Declare @out Intset @out=@inreturn @outend为什么运行时函数名前都要加dbo. 能不能不要这样?to libin_ftsafe(子陌红尘)你的好象有些问题select dbo.f_getorder(module_id) from tb 112131241251246但是id好超过10好像就不行了to paoluo(一天到晚游泳的鱼):如果我要返回2个Int,应该怎样写使用函数时,前面前要加上所有者。create table 表 (module_idint, parent_id int , level int , module_name char(10) , have_son int)insert 表 select 1 , 0 , 1 , '总公司' , 1insert 表 select 2 , 1 , 2 , '分公司1' , 1insert 表 select 3 , 1 , 2 , '分公司2' , 0insert 表 select 4 , 2 , 3 , '开发部' , 1insert 表 select 5 , 2 , 3 , '销售部' , 0insert 表 select 6 , 4 , 4 , '办公室' , 0insert 表 select 10 , 1 , 4 , '分公司3' , 0就不对了我上面给出的函数有个BUG,修改如下:-----------------------------------------------------------alter function f_getorder(@module_id int)returns varchar(8000)asbegin declare @ret varchar(8000) select @ret = right('0000' rtrim(module_id),4), @module_id = parent_id from 表 where module_id = @module_id while(@@rowcount<>0) select @ret = right('0000' rtrim(module_id),4) @ret, @module_id = parent_id from 表 where module_id = @module_id and @module_id != 0 return @retend回复人: podboq() ( ) 信誉:100 2005-04-15 12:57:00 得分: 0 to paoluo(一天到晚游泳的鱼):如果我要返回2个Int,应该怎样写 -------------------------------------------函数不能返回两个Int,不过你可以返回一个表变量,你在表变量中给两个Int字段。create function list(@in int)returns @Tesult Table(Out1 Int,Out2 Int)asbegin Insert @Tesult Values(@in,@in)return endGOSelect * from dbo.list(1)
标签: