生成编号的存储过程或者函数(这个分数不好拿啊,难)
生成编号的存储过程或者函数
编号是树型表的编号
说明
1表 tb
字段
id varchar(50)
name varchar(50)
code varchar(50)
rank int
parentid varchar(50)
数据:
id name code rank parentid
a01 ex A 1 0
a0101 ex 01 2 a01
a0102 ex 02 2 a01
a0103 ex 03 2 a01
a02 ex B 1 0
a0201 ex 01 2 a02
a0202 ex 02 2 a02
a0202001 ex 01 3 a0202
a0202002 ex 02 3 a0202
如果给出一个参数parentid求出id
我现在用c#求的
方法是:
先 根据sql="select * from "+table+" where parentid='"+parentid+"'";
1如果有值,则求出值中最大的id再加上1返回id就是所求
注意:这里有一种情况就是 当parentid=a0202的时候,为什么下级是a0202001,而不是a020201
2如果没有值,则先判断parentid是否等于"0"
如果等于返回id="a01"
如果不等于"0"则根据sql="select * from "+table+" where id='"+parentid+"'";求出rank---> id=parentid+rank个"0"+"1"
例如:parentid=a0202002
则他会判断没有值,走上面的2,然后判断不等于"0",接着又sql="select * from "+table+" where id='a0202002'"
求出rank等于3,则通过id=parentid+rank个"0"+"1"则应该返回id=a02020020001
再例如:parentid=a01则它会通过select * from "+table+" where parentid='"+parentid+"'判断有值,则求出最大的+1应该返回a0104
再例如:parentid=0 则应该返回a03