声明一个存储过程,作用是递归查询到最顶层。
例如:
code | name | parent_code |
---|---|---|
100 | nb | 0 |
200 | zjc | 100 |
对于这样的数据,那么就会输出 <zjc<nb; 代码中的判断条件是parentCode = 0终止。
mysql代码如下:
DELIMITER //
DROP FUNCTION IF EXISTS getParentRegion;
create FUNCTION getParentRegion(org VARCHAR(32))
returns varchar(4000)
BEGIN
DECLARE oTempParent VARCHAR(4000);
DECLARE oTempName VARCHAR(4000);
DECLARE oName VARCHAR(4000);
SET oTempParent = org;
set oTempName = '';
SET oName = '';
WHILE oTempParent !='0'
DO
SELECT
parent_code,name
INTO oTempParent,
oTempName
FROM
t_sys_region
WHERE
CODE = oTempParent ;
SET oName = CONCAT(oName,'<',oTempName);
END WHILE;
RETURN oName;
END //
DELIMITER;
select getParentRegion('200');
使用下面代码则输出zjc<nb
select SUBSTR(getParentRegion(ORG_REGION),2)
存在优化空间,这里只是简单做个工作记录。