HANA SQLSCRIPT 过程中的递归自连接
Recursive self-join in HANA SQLSCRIPT procedure
根据学术文献
http://pi3.informatik.uni-mannheim.de/~norman/HANA_SqlScript_BTW2013.pdf
HANA 将支持对分层树的递归调用,如下所示:
CREATE PROCEDURE browse_set_top_bt
(IN depth INTEGER, IN currDepth INTEGER, IN current tt_from_to,
OUT hull tt_from_to)
LANGUAGE SQLSCRIPT
READS SQL DATA AS
BEGIN
relevant = SELECT Frm , To
FROM CustomerConnections
WHERE weight >= 2;
temp = SELECT c.Frm , r.To
FROM :current c, :relevant r
WHERE c.To = r.Frm ;
currDepth = currDepth + 1;
IF( currDepth < depth )
CALL browse_set_top_bt ( depth, currDepth, temp, temp2 )
hull = :temp UNION :temp2;
ELSE
hull = :temp;
END;
END;
欢迎以这种最终方式进一步支持以递归自连接方式浏览父子树。
抱歉,您将查询处理功能的学术测试实现误认为是交付的标准产品功能的一部分。
SAP HANA 不支持论文中描述的递归查询。
它支持的是面向图形的查询(可能适合您的用例)和分层查询。
我建议检查实际产品 documentation 以了解两者的详细信息!
根据学术文献 http://pi3.informatik.uni-mannheim.de/~norman/HANA_SqlScript_BTW2013.pdf
HANA 将支持对分层树的递归调用,如下所示:
CREATE PROCEDURE browse_set_top_bt
(IN depth INTEGER, IN currDepth INTEGER, IN current tt_from_to,
OUT hull tt_from_to)
LANGUAGE SQLSCRIPT
READS SQL DATA AS
BEGIN
relevant = SELECT Frm , To
FROM CustomerConnections
WHERE weight >= 2;
temp = SELECT c.Frm , r.To
FROM :current c, :relevant r
WHERE c.To = r.Frm ;
currDepth = currDepth + 1;
IF( currDepth < depth )
CALL browse_set_top_bt ( depth, currDepth, temp, temp2 )
hull = :temp UNION :temp2;
ELSE
hull = :temp;
END;
END;
欢迎以这种最终方式进一步支持以递归自连接方式浏览父子树。
抱歉,您将查询处理功能的学术测试实现误认为是交付的标准产品功能的一部分。
SAP HANA 不支持论文中描述的递归查询。
它支持的是面向图形的查询(可能适合您的用例)和分层查询。 我建议检查实际产品 documentation 以了解两者的详细信息!