初学Sybase,遇到一个递归查询的问题,求解!请各位大侠帮帮忙哦!
Sybase数据库中如何实现以下业务需求啊?也就是递归查询。但在Sybase中貌似没有内置的递归函数,应该只能用存储过程来实现吧。
小弟不才,请问这种Sybase递归查询的存储过程怎么写啊?
T_ORG_INFO(机构表):
id orgCode(机构号) orgName(机构名称) pid(父ID)
1 00001 机构1(根机构) null
2 00002 机构2 1
3 00003 机构3 1
4 00004 机构4 2
5 00005 机构5 4
6 00006 机构6 4
需求:
如果查询的是机构号‘00002’的数据,则需要实现两种可能性的数据查询(可以分别写两个SQL或存储过程的语句):
1、需要查询出它以及它的所有下级机构信息(注:如果当前查询的机构号是‘叶子机构’(如:00005和00006)则没有下级机构,默认查询当前查询的机构信息即可)
2、需要查询出它以及它的所有上级机构信息(注:如果当前查询的机构号是‘根机构’(如:00001)则没有上级机构,默认查询当前查询的机构信息即可)
如上条件(00002)所述,查询出来的数据应该是:
1、本机构以及所有下级机构:‘00002’、‘00004’、‘00005’和‘00006’的信息。
2、本机构以及所有上级机构:‘00002’和‘00001’的信息。
请各位DX给个存储过程出来啊!最好能有注释哦,拜谢啦。