迭代获取
Oracle:String sql = "select ott.* from olap_topic_category ott where ott.status<>-1 and ott.fieldCategory=:fieldCategory start with ott.pid=-1 connect by prior ott.id=ott.pid order by ott.sortor asc";
mysql:
drop FUNCTION if exists getCategoryParentList ;
CREATE FUNCTION `getCategoryParentList`(rootId INT) -- 获取业务类型递归,rootId为你要查询的节点。
RETURNS VARCHAR(1000)
BEGIN
DECLARE pTemp VARCHAR(1000);
DECLARE cTemp VARCHAR(1000); -- 两个临时变量
SET pTemp = '$';
SET cTemp =cast(rootId as CHAR); -- 把rootId强制转换为字符。
WHILE cTemp is not null DO
SET pTemp = concat(pTemp,',',cTemp); -- 把所有节点连接成字符串。
SELECT group_concat(pid) INTO cTemp FROM olap_topic_category
WHERE FIND_IN_SET(id,cTemp)>0;
-- FIND_IN_SET(str,strlist)的方法网上大把不解释。
END WHILE;
RETURN pTemp;
END
drop FUNCTION if exists getCategoryChildList ;
CREATE FUNCTION `getCategoryChildList`(rootId INT) -- 获取业务类型递归,rootId为你要查询的节点。
RETURNS VARCHAR(1000)
BEGIN
DECLARE pTemp VARCHAR(1000);
DECLARE cTemp VARCHAR(1000); -- 两个临时变量
SET pTemp = '$';
SET cTemp =cast(rootId as CHAR); -- 把rootId强制转换为字符。
WHILE cTemp is not null DO
SET pTemp = concat(pTemp,',',cTemp); -- 把所有节点连接成字符串。
SELECT group_concat(id) INTO cTemp FROM olap_topic_category
WHERE FIND_IN_SET(pid,cTemp)>0;
-- FIND_IN_SET(str,strlist)的方法网上大把不解释。
END WHILE;
RETURN pTemp;
END