HANA SQL:"无法支持递归公用表表达式"

2020-09-13 14:22发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 我在HANA 1 SP...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我在HANA 1 SPS 12上,并且创建了此数据库表:

创建表"测试"(ID int不为空); 

当我尝试执行此查询时:

使用" test" AS(SELECT * FROM" RBOUMAN"。" test")
 SELECT * FROM" test"; 

我收到此错误消息:

 SAP DBTech JDBC:[7]:不支持的功能:不支持递归公用表表达式'test':第1行第6行(在pos 5)
 无法执行"
 

我不明白为什么会发生这种情况。

WITH子句中的子查询引用了" RBOUMAN"。" test",在我看来,它明确指向架构" RBOUMAN"中的数据库表" test" "。
该错误似乎表明HANA认为该子查询正在引用自身。

不使用加引号的标识符的类似查询也可以正常工作:

,DUMMY为(
 选择*,'Y'作为Y
 来自SYS.DUMMY
 )
 从DUMMY中选择Y; 
有人可以向我解释为什么第一个查询给我这个结果吗? 是虫子吗?
4条回答
2020-09-13 15:12

我认为您正在与用户RBOUMAN在设置了默认架构RBOUMAN的SQL控制台中执行该语句。 在这种情况下,在语句SELECT * FROM" test"中,如果您用" test"表示CTE结果或表" RBOUMAN"。" test"(因为考虑了默认架构RBOUMAN),它不是唯一的。

如果您使用命令SET SCHEMA设置了控制台中的其他架构-其中不存在"测试"表-它将适用于您的方案(例如SET SCHEMA SYSTEM)。 但这当然不是解决方案,因为您应该选择一个不与表名称冲突的特定CTE结果名称。

如果是bug,我不知道,因为对于HANA来说,正式解释文档的顺序不是正式的。 但是根据我的感觉,我会拒绝。 也许SAP的某人可以放弃一些与此有关的知识。

致谢,
弗洛里安语

一周热门 更多>

相关问答