簡體   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