繁体   English   中英

SAP HANA 中的 WITH RECURSIVE 公用表表达式

[英]WITH RECURSIVE Common Table Expressions in SAP HANA

我真的不知道为什么我不能让这个递归 CTE 在 HANA 中工作。 我们在 HANA 2 上,所以据我所知,如果我将它作为 SQLSCRIPT 放在一个过程中,它应该得到支持。 我们不想使用内置的层次结构函数,因为我们试图尽可能不使用专有解决方案。

它无法识别 CTE 的嵌套 (INNER JOIN) 部分。 我已经尝试了所有方法,但它说在我的个人模式中找不到它,这告诉我它正在将其解释为表格。

错误:

[Location_In_Repository] ​​未找到依赖对象:SqlScript; USERSCHEMA.USER_HIER:未找到符号

BEGIN
WITH USER_HIER AS (
    
SELECT USER_ID, MANAGER_ID
FROM HR.DIM_USER_V

UNION ALL

SELECT hier.USER_ID, hier.MANAGER_ID 
FROM HR.DIM_USER_V hier
    INNER JOIN USER_HIER ON USER_HIER.USER_ID = hier.MANAGER_ID)
SELECT * 
FROM USER_HIER;
END

最新的 HANA 2 文档明确指出:

<with_clause> 不能支持递归查询表达式。

层次函数是 HANA 的方法。 虽然这些当然是专有的,但递归 SELECT 的大多数实现也是专有的(参见https://www.wikiwand.com/en/Hierarchical_and_recursive_queries_in_SQL )。

我建议将层次结构处理封装到视图或表函数中 - 这样,在移植到不同的 DBMS 时就可以直接交换实现细节。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM